pandas

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

相关推荐