这里是官网上的原文。每次都还链接到最新版本。这篇文章,对于不是英语母语的,10分钟,我觉得绝逼是看不完的。网上已经有很多翻译了。我只是把文章的结构组织以下,死记硬背一下它提到的知识点。
对象创建
创建Series
s = pd.Series([1,3,5,np.nan,6,8])
创建基于时间的index
dates = pd.date_range('20130101', periods=6)
创建DataFrame
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
查看数据
首尾数据
df.head()
df.tail(5)
查看索引,列,值
df.index
df.columns
df.values
查看统计数据
df.describe()
转置
df.T
索引排序
df.sort_index(axis=1, ascending=False)
按列值排序
df.sort_values(by='B')
选取
[]取列
df['A']
df[['A','B']]
[]取行
df[0:3]
df['20130102':'20130104']
'20130102':'20130104'
可自动转化为dateIndex- 单值’20130102’会尝试匹配列
通过标签来选取 loc
df.loc[dates[0]]
df.loc[:,['A','B']]
df.loc['20130102':'20130104',['A','B']]
df.loc[dates[0],'A']
df.at[dates[0],'A']
- 通过标签,既通过具体的值,而不是位置来取值(语义:’A’列的’2013-01-02’行)
- at比loc更快(取单值)
通过位置来选取 iloc
df.iloc[3]
df.iloc[3:5,0:2]
df.iloc[[1,2,4],[0,2]]
df.iloc[1:3,:]
df.iloc[:,1:3]
df.iloc[1,1]
df.iat[1,1]
- 位置永远都是integer类型,iloc[]只接受整数(语义:第4列的第3行)
- iat比iloc要快(取单值)
- 如果index是整数索引,loc和iloc在取行的时候是一样的,但iloc要快,不需要做key的匹配(语义:第4列的第3行和’4‘列的’3‘行的区别)
布尔索引匹配
df[df.A > 0]