Data Wrangling with Python学习笔记

Chapter 4 深入学习python数据整理

一、选取子集
1、基于loc方法,可以同时选择行和列的部分内容

#同时对行和列进行选择
df.loc[[i for i in range(5,10)],["a","b","c","d"]]
df[["a","b","c","d"]][5:10]
#unique函数-该函数可以快速扫描数据,并提取行或者列中的唯一值
df['a'].unique() ##返回的是唯一的值
df['a'].nunique() ##返回的是唯一值的个数
df[(条件1)&(条件2)] #涉及字符串的条件句,需要用&/|运算符连接两个条件,并且条件要用括号括起来

2、设置索引

##重置索引
df1.reset_index()
df1.reset_index(drop=True) ##重置
#设置索引
df1.set_index('a') ##把某列当做索引

二、分组

1、groupby方法

bya = df1.groupby('a') #以a作为分组依据
bya = df1.groupby('a','b') #以a和b作为分组依据,先按a后按照b
bya.describe().loc['a1','b1','c1'] ##涉及函数及切片

三、处理缺失值和检测异常值
在统计意义上,超出某一范围的数据点通常被归类为异常值。
1、isnull()函数

df_miss.isnull()#则会输出df_miss的每个值对应的布尔值结果True 或者False

2、用fillna填充缺失值

df_miss.fillna('fill') ##将空值填充为fill,填充字符串数据
df_miss['Sales'].fillna(method='ffill') ##用前一个数据填充
df_miss['Sales'].fillna(method='bfill') ##用下一个数据填充
df_miss['Sales'].fillna(df_miss.mean()['Sales']) ##用均值填充

3、用dropna删除缺失值

df_miss.dropna()

可参考以下博主的记录
dropna()用法

4、异常值的检测
绘制箱线图,箱线图的绘制和使用可以参考以下材料
(1)箱线图如何判断异常值
(2)箱线图的python实现

四、合并数据方法:concat、merge和join

pd.concat -axis #0表示行,1表示列
pd.merge - on - how #on列名
a.join(b,how)

书中讲解较为简单,可以参考以下材料
PANDAS 数据合并与重塑(concat篇)
PANDAS 数据合并与重塑(join/merge篇)

注意:当用merge方法连接时,如果连接的键中有重复值,则连接后的数据中会出现重复的数据,可以使用drop_duplicates去重即可。

pd.merge(df_1,df_2,on='Customer',how='inner').drop_duplicates()

##NaT表示非时间对象

五、随机抽样
1、sample方法

df.sample(n=6,replace=) #按个数抽样
df.sample(frac=0.1,replace=)#按百分比抽样,该例子为10%
##是否选择替换完成抽样,默认为False,表示不重复;replace =True表示允许多次选择相同的元素。

2、value_counts方法
该函数返回的值为按照频次从高到低的顺序展示的每一列的唯一值。

df['country'].value_count()[:10]##输出排在前10位的国家

六、透视表功能

##按地区(region)和州(state)两个索引级别看平均销售额、利润和销售量
df_sample.pivot_table(values=['Sales','Quantity','Profit'],index=['Region','State'],aggfunc='mean')

结果如下图所示
在这里插入图片描述
七、排序

df_sample.sort_values(by='Sales',ascending=True) #默认升序
df_sample.sort_values(by=['State','Sales'],ascending=[True,False]) #先按照state升序,再按照sales降序排列

八、apply方法实现用户自定义函数的灵活性
apply函数中也可以叠加lambda函数,可参考以下链接:
Python apply函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值