[关闭]
@nemos 2017-05-06T02:38:51.000000Z 字数 2256 阅读 832

pandas

ml


快速入门

  1. import pandas as pd
  1. # 读取
  2. df = pd.read_csv('xxx.csv')
  3. df = pd.read_json('xxx.json')
  4. # 查看数据统计信息
  5. df.describe()
  6. # 查看数据前几行
  7. df.head()
  8. # 类型类信息快速查看
  9. titanic["Embarked"].unique() # 返回不同类型
  10. titanic["Embarked"].value_counts() # 显示不同类型及其个数
  11. # 非数值列转换
  12. titanic.loc[titanic['Sex']=='male','Sex'] = 1
  13. # 缺失值填充
  14. titanic['Embarked'] = titanic['Embarked'].fillna('S')
  15. titanic['Embarked'].dropna() # 丢弃
  16. # 分组
  17. gp = titanic['Age'].groupby(titanic['Sex'])
  18. dict(list(gp))['male']

详细说明

DataFrame

读存

  1. pd.DataFrame(data=, index=, columns=) #数据集,索引,列名
  2. # 左边的为index,上边的为columns
  3. df = pd.DataFrame({'A' : [4,5], 'B' : [10,20]}, )
  4. df.to_csv('xxx.csv')

描述

  1. df.info #数据的数值信息
  2. df.tail() #倒数
  3. df.index #返回索引,不可修改
  4. df.columns #返回列名
  5. df.values #返回数据
  6. df.sum(axis=) #返回大小默认为列
  7. fd.df.count() #非nan值数量

索引

  1. df[]
  2. df[row1: row2] #行连续索引
  3. df['index1', 'index5'] #行名称连续索引
  4. df.loc[index[0]] #index值为index[0]的数据行
  5. df.loc[1:3] #行连续名称索引,左右都是闭区间
  6. df.loc[[1,3]] #行离散名称索引
  7. df.iloc[1,3] #行连续位置索引

  1. df['col'] #单列名称索引
  2. df.col #同上
  3. df[['col1', 'col2']] #列离散名称索引
  4. df[[0, 1, 2]] #列位置离散索引
  5. df[list(range(5))] #列连续位置索引

  1. # 逗号分割行列操作
  2. df.ix[['row1', 'row2'], ['col1', 'col2']] #
  3. df.loc[:,['col1','col2']] #块离散名称索引
  4. df.loc['20161111':'20161212', ['A', 'B']] #x块索引
  5. df.iloc[3:5,0:2] #块连续位置索引
  6. df.iloc[[1,2,4],[0,2]] #块离散位置索引

条件

  1. df[(df.A > 0) and (df.B<0)] #条件筛选
  2. df[df['col'].isin(['ele1','ele2'])] #in条件筛选

分组


操作

增删改

  1. df['col'] = 给列赋值可以为数值,series
  2. #列不存在则创建
  3. del df['col'] #删除列
  4. new_df = df.drop('xxx', axis=) #删除行或列由axis指定
  5. df.dropna(how='any') #删除所有值包含nan的行
  6. df.copy() #返回拷贝
  7. pd.merge(df1, df2, on='col') #以col为准合并
  8. df.append(s, ignore_index=True) #追加一个series到df上

函数

  1. df.apply(funcaxis=) #将函数作用于行或列
  2. df.apply(func) #元素级操作
  3. df.fillna(value=0) #填充nan的值
  4. pd.isnull(df) #判断
  5. df.replace(to_replace='?', value=np.nan) #将?替换为np.nan
  6. df.mean(axis=0) #对每列求平均
  7. df.mean(1) #对每行求平均
  8. df.str.lower() #字符操作
  9. pd.concat(dflist) #连接
  10. df.groupby('col') #

算数

  1. df1 + df2 #在不重叠的地方会产生NaN值
  2. df1.add(df2, fill_value=0) #指定值填充不重叠的地方
  3. # df与s的操作会在行上形成广播, 不存在形成并集
  4. df1.add(s, axis) #列传播要用函数指定axis

索引

  1. df.reindex(index=, colums=, fill_value=, method=)
  2. #重新指定索引,默认缺少值,指定方法

排列

  1. df.sort_index(axis=1, ascending=False) #按索引排列
  2. df.sort_values(by='B') #按一列的值排列
  3. df.rank(axis=) #排名
  4. df.T #转置

Series

创建

  1. s = pd.Series([1, np.nan, 6], index=['a', 'b'], 'c')
  2. #index默认为int64
  3. >>> s
  4. a 1.0
  5. b NaN
  6. c 6.0
  7. dtype: float64

属性

  1. s.name #series 名
  2. s.index.name #index名

选取

  1. s['a']
  2. s[['a', 'b']]
  1. s[s > 0] #条件

操作

不作特殊说明都是直接直接操作

  1. obj * 2
  2. np.exp(s)
  1. # 看成字典
  2. 'b' in s #-> True
  1. s.index = [] #index可以直接修改
  1. s.map() #函数操作
  2. s.order() #排序
  3. s.rank(method=) #返回一个排名

参考

十分钟入门pandas
cookbook
Python数据处理:Pandas模块的 12 种实用技巧


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注