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
posted @ 2020-01-08 00:01  小xxxx程序员  阅读(179)  评论(0编辑  收藏  举报