一、basic
Series
DataFrame
创建
# 创建Series
pd = Series([1, 3, 5, np.nan, 6, 8])
# 创建DataFrame
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
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'),
'F': 'foo'})
查看
df.head()df.tail()df.index()df.columns()
与numpy()之间互相转化
df.to_numpy()
排序
df.sort_by_values(by='B')
选择
使用label选择时,行是有序的,可以从一个row到另一个row,中间用:连接实现切片;但是列是无序的,需要列表进行自定义选择。
- 行
获取若干行:df[0:3]
- 列
获取单个列:df.col_name / df[col_name]
- 行+列
通过label获取:df.loc
通过index获取:df.iloc
布尔索引
索引方式和之前不变,只不过将label或者index换成了bool数组
修改值
df.at: 通过labeldf.iat: 通过index
example:
df.iat[0, 1] = 0
缺失值
pandas允许缺失值出现,所以,针对缺失值有不同的处理方法:
pd.isna(df)生成一个布尔数组,表示是否缺失df.dropna(how='any')丢失所有存在缺失值的行df.fillna(value=5)统一填充为固定值5
计算
统计学计算
df.mean()df.sub(df)df.value_counts()df.groupby(col_name)
调用函数
df.apply(function_object)
连接
pd.concat()pd.merge()df.append()
改变shape
df.stack(): 统计
example
df.stack()
'''
first second
bar one A 0.029399
B -0.542108
two A 0.282696
B -0.087302
baz one A -1.575170
B 1.771208
two A 0.816482
B 1.100230
dtype: float64
'''
绘画
df.plot()
输入输出
df.to_csv(file_path)df.to_hdf(file_path, 'df')pd.read_hdf('foo.h5', 'df')pd.read_excel(file_path, sheet_name)