pandas
创建对象:
1、传入array,设置index和columns。
df = pd.dataFrame(np.random.randn(6,4),index = index,columns = list('ABCD'))
2、传入dict,键名当作列名。
df = pd.DataFrame({'A':1,'B':'foo'})
查看数据:
1 # 索引 2 df.index 3 # 列名 4 df.columns 5 # 数据 6 df.values 7 # 数据统计 8 df.describe() 9 # 按轴排序,axis = 1为列,0为行 10 df.sort_index(axis = 1,ascending = False) 11 # 按值排序 12 df.sort_values(by = 'B')
选择:
# 直接加列名或者列名列表 df['A'] # 切片,可数字切片或者index切片。 df[0:3] df['A':'C'] # bool值,可列表或者矩阵,如果是列表则根据行来显示,如果是矩阵则返回矩阵,false值则是NaN df[df['A'] > 0] # .loc,第一个值是行号,第二个值为列名 df.loc['20130102':'20130104',['A':'B']] # .iloc,俩个都是位置参数 df.iloc[[1,2,4],[0,2]] # isin()方法过滤,包含在集合里的则返回True df.[df['A'].isin(['1','2'])]
缺失值处理:(在pandas中,使用np.nan来代替缺失值,这些值将默认不会包含在计算中)
# 去掉包含缺失值的行 df.dropna(how = 'any') # 对缺失进行填充 df.fillna(value = 5)
Apply:
DataFrame.apply(self,func,axis = 0,broadcast = None,raw = False,reduce = None,result_type = None,args =(),** kwds) func:函数 axis:0:将函数应用于每一列;1:将函数应用于每一行 args:除数组/系列外,还传递给func的位置参数 ** kwds:作为关键字参数传递给func的其他关键字参数
统计类别个数:
df['A'].value_counts()
合并:
1 # concat,沿特定轴将pandas对象与其他轴上的可选设置逻辑连接起来 2 pandas.concat(objs,axis = 0,join ='outer',join_axes = None,ignore_index = False,keys = None,level = None,names = None,verify_integrity = False,sort = None,copy = True ) 3 objs:对象(包含数据框的list) 4 axis:0:行;1:列 5 join:outer:全部;inner:重合部分 6 ignore_index:忽略的字段或者是index 7 8 # join,类似于数据库的join 9 DataFrame.merge(self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) 10 self:左侧的pandas 11 right:右侧的pandas 12 how:inner,outer,left,right 13 on:用于连接的列名 14 left_on:左侧连接的列 15 right_on:右侧连接的列 16 left_index:左侧的行索引作为连接列;用了这俩个参数则是index连接 17 right_index:右侧的行索引作为连接列 18 sort:根据连接键排序 19 20 # append,将其他行附加到调用方的末尾,并返回一个新对象。 21 DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None) 22 other:pandas对象 23 ignore_index:是否忽略原来的index 24 verify_integrity:创建具有重复项的索引时引发ValueError
分组:
df.group_by(['A','B']).sum()
改变形状:
stack:列 -> 行;df.stack()
unstack:行 -> 列;df.unstack()
数据透视表:
1 pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False) 2 data:pandas对象 3 values:汇总的列 4 index:行 5 columns:列 6 aggfunc:汇总函数,如果是dict类型则键名是列名对应的值是函数 7 fill_value:用替换缺失值的值 8 margins:添加所有行/列(小计/总计) 9 dropna:是否排除Nan
读取csv文件:
pd.read_csv('..csv',sep = ';',encoding = 'latin1',parse_dates = ['Date'],dayfirst = True,index_col = 'Date') sep:分隔符 encoding:编码 parse_dates:解析日期的字段 dayfirst:将日放在最前面 index_col:索引字段
na_values:定义Nan的值
dtype:指定处理类型
绘图:
# pandas自带画图方法 df['A'].plot()
根据日期得到日和星期:
df.index.day
df.index.weekday