十分钟入门pandas(上)【解读pandas官方文档】
(点击上方Python爱好者社区,可快速关注)
作者:王大伟
博客专栏:https://www.hellobi.com/u/wangdawei/articles
Python爱好者社区 唯一小编
前言
其实,学习Python很好的方法是去看官方文档。
有人会说,我零基础,看不懂啊!
也有人会说,我英语差,看不懂啊!!
还有人会说,我想学实战案例,不想看的这么详细!!!
是的,官方文档说的面面俱到,像是查字典似的,对于初学者是很不友善的
所以大部分人选择了:拒绝!
其实,我以前也是不看官方文档的,但有些问题百度不到,看的书里没讲到,那我就被迫去看官方文档了
此举给我打开了学习Python的一扇窗
我发现,官方文档其实有很多例子和入门学习内容,比如我们今天要说的
十分钟入门Pandas
很多人讨厌看官方文档,今天我就用中文简单解读一下,争取让大家看懂,能入门Pandas
官方文档说想要详细了解Pandas的更多用法可以看它的cookbook:http://pandas.pydata.org/pandas-docs/stable/cookbook.html#cookbook
导入模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
这分别导入了pandas、numpy包 和 matplotlib 包中的 pyplot 模块
创建对象
请参见“数据结构简介”部分:http://pandas.pydata.org/pandas-docs/version/0.20/dsintro.html#dsintro
通过一个列表的值创建一个系列,让pandas创建一个默认的整数索引:
s = pd.Series([1,3,5,np.nan,6,8])
s
注意:np.nan表示不存在
通过numpy创建的数组,可以创建一个pandas中特有的dataframe,使用datetime作为索引和标记列名。
dates = pd.date_range('20130101', periods=6)
dates
这里的date_range()是pandas下的一个方法,可以在jupyter notebook下使用如下方法查看使用说明:
?pd.date_range()
我们可以看到这个方法的使用说明和各个参数的作用
看到这个方法是返回固定频率日期时间索引,返回连续的六个日期信息
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
df
?np.random.randn()
np.random.randn(6,4)是生成6行4列的标准正态分布数据
注:这里使用ABCD为列标签,之前生成的日期序列为行标签,6行4列标准正态分布数据为内容的dataframe
使用字典来创建dataframe
df2 = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
df2
查看dataframe的类型信息
df2.dtypes
查看数据
更多内容请参阅基础部分:http://pandas.pydata.org/pandas-docs/version/0.20/basics.html#basics
查看dataframe顶部和底部的行(默认五行)
df.head()#查看默认前五行
df.tail()#查看默认后五行
df.head(3)#查看前三行
显示索引,列和底层numpy数据
显示索引:
df.index
显示列名:
df.columns
查看底层numpy数据:
df.values
对数据的描述性统计信息
df.describe()
注意:数据需要是数字类型(float,int等)
转置调换数据
df.T
注意:就像线性代数里面的转置矩阵
按轴排序
df.sort_index(axis=1, ascending=False)
可能你还看不太明白这是什么方法
我们help一下
这说明axis可以取0或者1,我们试试看0:
df.sort_index(axis=0, ascending=False)
可以看出两者的区别
深入挖掘其中的参数作用还得你自己慢慢看呢
按值排序
df.sort_values(by='B')
这是B列数据排序,并且其他数据参照B列数据变化。
选择数据
更多内容请参阅索引文档索引:http://pandas.pydata.org/pandas-docs/version/0.20/indexing.html#indexing
和选择数据和多指标/高级索引:http://pandas.pydata.org/pandas-docs/version/0.20/advanced.html#advanced
选择一个列,返回一个Series,相当于df.A
df['A'] #取A列数据,返回的是一个序列
选择通过[],切片出行数据
df[0:3] #使用默认索引取出前三行
df['20130102':'20130104'] #使用新索引取出对应行
标签选择
在标签选择中查看更多内容:http://pandas.pydata.org/pandas-docs/version/0.20/indexing.html#indexing-label
使用标签获取一块数据:
df.loc[dates[0]] #取出第一行
通过标签选择多列:
df.loc[:,['A','B']] #这里选择的是A,B列数据
显示标签切片:
df.loc['20130102':'20130104',['A','B']]
减少返回对象的维度:
df.loc['20130102',['A','B']]
获得标量值(就是定位一个具体的值):
df.loc[dates[0],'A']
快速访问标量(等同于先前的方法):
df.at[dates[0],'A']
按位置选择
更多按位置选择内容:http://pandas.pydata.org/pandas-docs/version/0.20/indexing.html#indexing-integer
通过传递的整数的位置进行选择:
df.iloc[3] #取出第三行
通过整数切片,类似于numpy / python:
df.iloc[3:5,0:2]
切出3-4行,1-2列一块区域
通过整数位置列表切分,类似numpy的/ Python的风格:
df.iloc[[1,2,4],[0,2]]
切分出某些行:
df.iloc[1:3,:]
切分出某些列:
df.iloc[:,1:3]
获取某个值
df.iloc[1,1]
快速访问某个值(等同于先前的方法):
df.iat[1,1]
布尔索引
使用单列值选择数据
df[df.A > 0]
注意:先判断A栏中大于零的数,然后把这些行取出来
从满足布尔条件的DataFrame中选择值:
df[df > 0]
注:显示dataframe中大于零的数
使用isin()方法进行过滤:
df2 = df.copy()
df2['E'] = ['one', 'one','two','three','four','three']
df2
注:copy了一份dataframe,然后新加了一列E
?df2.isin()
从help文件可以知道isin()方法的作用是:
DataFrame显示每个元素是否在DataFrame包含在值中,返回boolean.
df2[df2['E'].isin(['two','four'])]
相当于判断two和four两列是否在df2中,在的话返回True,然后将参数传入df2,返回这两列的值。
设置
置新的列会自动使索引对齐数据:
s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6))
s1
df['F'] = s1
df
这里用和原来一样的索引(时间)为原来的dataframe增加了一列数据
通过使用numpy数组分配进行设置:
df.loc[:,'D'] = np.array([5] * len(df))
df
注:产生一个数组,每个元素值为5,长度为df的行数,替换在原来df的D列
按位置设定值:
df.iat[0,1] = 0
df
注:将第一行第二列的数值设定为0
设置操作:
df2 = df.copy()
df2[df2 > 0] = -df2
df2
注:将df copy一份命名为df2,然后将df2中大于零的数加负号
参考文献:http://pandas.pydata.org/pandas-docs/version/0.20/10min.html#selection
新福利:Kenny 7月11日在Hellobi Live直播 《自然语言处理之-基于深度学习技术的诗歌写作机器人》内容:
1、 写诗机器人效果展示
2、 基于深度学习写诗机器人训练数据收集,清洗,导入
3、 诗歌数据预处理,特征化和数值化后转化为可训练的数据
4、 写诗机器人模块介绍
5、 写诗机器人算法介绍
6、 写诗机器人的实现及效果评估
付费参加方式:点击阅读原文报名
免费参加方式:长按下图,关注公众号Python爱好者社区,在菜单栏点击免费听课参加活动
关注公众号,“Python爱好者社区”,回复“爬虫”即可获取崔老师爬虫免费学习视频。
为大家提供与Python相关的最新技术和资讯。
长按指纹 > 识别图中二维码 > 添加关注