Pandas笔记

218 阅读1分钟

一、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]

  1. 行+列

通过label获取:df.loc

通过index获取:df.iloc

布尔索引

索引方式和之前不变,只不过将label或者index换成了bool数组

修改值

  • df.at: 通过label
  • df.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)