zhangxiaojiakele 2020-01-07
创建对象:
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‘})
查看数据:
# 索引 df.index # 列名 df.colums # 数据 df.values # 数据统计 df.describe() # 按轴排序,axis = 1为列,0为行 df.sort_index(axis = 1,ascending = False) # 按值排序 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()
合并:
# concat,沿特定轴将pandas对象与其他轴上的可选设置逻辑连接起来 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 ) objs:对象(包含数据框的list) axis:0:行;1:列 join:outer:全部;inner:重合部分 ignore_index:忽略的字段或者是index # join,类似于数据的join 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) self:左侧的pandas right:右侧的pandas how:inner,outer,left,right on:用于连接的列名 left_on:左侧连接的列 right_on:右侧连接的列 left_index:左侧的行索引作为连接列;用了这俩个参数则是index连接 right_index:右侧的行索引作为连接列 sort:根据连接键排序 # append,将其他行附加到调用方的末尾,并返回一个新对象。 DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None) other:pandas对象 ignore_index:是否忽略原来的index verify_integrity:创建具有重复项的索引时引发ValueError
分组:
df.group_by([‘A‘,‘B‘]).sum()
改变形状:
stack:列 -> 行
unstack:行 -> 列
数据透视表:
pandas.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean‘, fill_value=None, margins=False, dropna=True, margins_name=‘All‘, observed=False) data:pandas对象 values:汇总的列 index:行 columns:列 aggfunc:汇总函数,如果是dict类型则键名是列名对应的值是函数 fill_value:用替换缺失值的值 margins:添加所有行/列(小计/总计) 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
计算的时候总共分3步,1到2是第二组......lower: i. 这组数据中的小值 higher: j. 这组数据中的大值,fraction 是第三步中的小数部分,意思是当前这组数据的0到1的分位数
Series是一种类似于一维数组的对象,由一组数据以及一组与之对应的索引组成。 index: 索引序列,必须是唯一的,且与数据的长度相同. 如果没有传入索引参数,则默认会自动创建一个从0~N的整数索引