python pandas

Pandas

Pandas库的Serise、 DataFrame基础函数

pandas.Series

Series类型由一组数据及之相关的数据索引组成

Series类型可以由如下类型创建

python列表
标量值
python字典
ndarray
其他函数

s=pd.Series(25,index=['a','b','c','d']) 	#标量值
d=pd.Series({'a':10,'b':11,'c':12}) 	#字典类型
e=pd.Series({'a':10,'b':11,'e':12},index=['c','a','b','d']) #index构造Series,并选取字典的值
n=pd.Series(np.arange(10)) 				#ndarray
m=pd.Series(np.arange(5),index=np.arange(9,4,-1)) #ndarray+index

Series类型的操作

.index 获得索引
.values 获得数据

索引

b['b']  	#序列索引
b[:3]  		#切片(切出来还是series类型)
'c' in b 	#判断'c'是否是索引只判断定义索引
b.get('f',100) 	#如果索引存在f,则返回values,不存在返回100

a+b 		#返回并集,返回相同index相加值
d.name 		#属性
d['c']=12 	#直接修改数据

DataFrame类型

DataFrame是一个表格型的数据类型,每列值类型可以不同(多列,表格)
DataFrame既有行索引,也有列索引 index,columns
DataFrame常用于表达二维数据,但可以表达多维数据

DataFrame类型可以由下类型创建

二维ndarray对象
由一维ndarray、列表、字典、元组或Series构成的字典
Series类型
其他的DataFrame类型

#基础数据
dt={'one':pd.Series([1,2,3],index=['a','b','c']),
    'two':pd.Series([9,8,7,6],index=['a','b','c','d'])}
d1={'one':[1,2,3,4],'two':[9,8,7,6]}
#生成DataFrame
d=pd.DataFrame(np.arange(10).reshape(2,5)) 	#ndarray
d=pd.DataFrame(dt) 							#字典
pd.DataFrame(dt,index=['b','c','d'],columns=['two','three']) 	#字典+标签
d=pd.DataFrame(d1,index=['a','b','c','d']) 	#字典+index

DataFrame数据操作

d.loc['c2'] 	#行index
d['one'] 		#列标签
d['one']['c']  	#先列后行
d.loc['c']['one'] #先行后列

Series \DataFrame改变

重排:重新索引
**.reindex(index=None,columns=None,…) **
参数 说明
index,columns 新的行列自定义索引
fill_value 重新索引中,用于填充缺失位置的值
method 填充方法,ffill当前值向前填充,bfill向后填充
limit 最大填充量
copy 默认True生成新的对象,False时,新旧相等不复制

.reindex(index=['c','b','a','e','f']) 重新排列,按自定义index
.reindex(columns=['three','two','one']) 重新排列,自定义columns
.set_index(['a', 'b']) DataFrame可以通过set_index方法,可以设置单索引和复合索引。 

填充列

df.fillna(0)
df.fillna({1:0, 2:0.5})         #对第一列nan值赋0,第二列赋值0.5
df.fillna(method='ffill')   #在列方向上以前一个值作为值赋给NaN

新增列

d.columns.index(4,'新增') 		#在第4列增加列名为’新增‘的对象
d.reindex(colunns=newc,fill_value=200)
d['newcolumn']=value

删除Series 和DataFrame指定行或列索引
可以使用操作符: | 只需其中一个成立, & 同时成立, ~ 表示取反,它们要用括号括起来。
df.drop(labels=None,axis=0,index=None,columns=None,level=None,inplace=False,errors=‘raise’)

#删除条件行
df.drop(df[df['column']>100].index) #删除条件列
#可以使用操作符: |, &, ~ 非,例用括号括起来。
df = df.drop(df[(df.column < 50) & (df.column > 20)].index)
#删除列
df=df.drop(['参考月供'],axis=1) #指定axis=1删除列
#空值处理
df.dropna()     #将所有含有nan项的row删除
df.dropna(axis=1,thresh=3)  #将在列的方向上三个为NaN的项删除
df.dropna(how='ALL')        #将全部项都是NaN的row删除,how='any'任意NaN的删除

#修改列值类型

df['column'] = df['column'].astype(np.int)

索引类型

.append(idx) 		#连接另一个index对象,产生新的index对象
.diff(idx) 			#计算差集,产生新的index对象
.intersection(idx) 	#计算交集
.union(idx) 		#计算并集
.delete(loc) 		#删除loc位置处的元素
.insert(loc,e) 		#在loc位置增加一个元素e

pandas 数据类型运算

索引相同才进行运算
补齐进缺项填充NaN
二维和一维,一维和0维间为广播运算
采用±*/符号进行的二元运算产生新的对象

a=pd.DataFrame(np.arange(12).reshape(3,4))
b=pd.DataFrame(np.arange(20).reshape(4,5))

a(±*/)b 补齐后运算,NaN不进行运算,并运算
方法形式的运算

.add(d,**argws)			#加
.sub(d,**argws)			#减
.mul(d,**argws)			#乘
.div(d,**argws)			#除

例:

b.add(a,fill_value=100) 	#NaN值用100替换
b.sub(a,fill_value=0)		#NaN值用0填充

不同维度间计算

b-100 								#广播运算

比较运算法则,同维度

比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算
采用> < >= <= == != 等符号进行的二元运算产生布尔对象

pandas库的数据排序

1、.sort_index()方法在指定轴上根据索引进行排序,默认升序。
.sort_index(axis=0,ascending=True)

2、.sort_valuess()方法在指定轴上根据数值进行排序
.sort_values(by,axis=0,ascending=true)

3、Nan统一放到排序末尾

Series DataFrame 统计函数

.sum()  求和
.count()  统计
.mean()  平均值
.median() 中位数
.var()  方差
.std()  标准差
.min()  最小值
.max()  最大值
.cov()  协方差
.corr() person相关性

适用Series

.argmin() 最小值的索引位置自动索引
.argmax() 最大值索引位置
.idxmin() 自定义索引
.idxmax()

基本统计信息

.describe() 			#获取基本统计信息
s.describe()['count'] 	#提取基本统计信息内指定信息
s.describe()['max']
s[1].describe()

累计统计函数

.cumsum().cumprod().commax() 最大值
.cummin() 最小值

滚动计算(窗口函数)

.roling(w).sum() 计算相邻W个元素的和
.roling(w).mean() 平均值
.roling(w).var() 方差
.roling(w).std() 标准差
.roling(w).min() 最小值
.roling(w).max() 最大值

删除重复值

df.duplicated() 重复项判断
df[df.duplicated()] 查看复复项

df.drop_duplicates(subset=None, keep=‘first’, inplace=False)
subset : column label or sequence of labels, optional
用来指定特定的列,默认所有列
keep : {‘first’, ‘last’, False}, default ‘first’
删除重复项并保留第一次出现的项
inplace : boolean, default False
是直接在原来数据上修改还是保留一个副本

删除列a,b重复行
df.drop_duplicates(subset=[‘a’,‘b’],inplace=True]
删除索引(index_col)的重复值
df=df[~df.index.duplicated()]

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值