2019-01-21至2019-01-27本周总结

本周主要的任务是强化pandas库,主要以练习为主,在练习中遇到了一些问题,主要包括以下内容
1)处理重复值【DataFrame.duplicated()、DataFrame.drop_duplicates()、Series.unique和Series.nunique()】
DataFrame.duplicated(),参考http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.duplicated.html

2019-01-21至2019-01-27本周总结_第1张图片
clipboard.png

用来查询数据框中是否存在重复值,关于重复值的处理由keep参数设定【删除、保留第一个或者保留最后一个】
DataFrame.drop_duplicates(),参考 http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html
2019-01-21至2019-01-27本周总结_第2张图片
image.png

返回数据框中的非重复值,关于重复值的处理与duplicated()类似。也可以说DataFrame.drop_duplicates()等于~DataFrame.duplicated()
Series.unique和Series.nunique()分别是返回非重复值和相应个数。
2)字典的神奇用法
将数据框df中的'priority'字段中的yes换成True,no换成False

df.replace({'priority':{'yes':True,'no':False}})
df['priority'].map({'yes':True,'no':False})

按照occupation和gender两个字段进行分组,求gender字段的样本数

users.groupby(['occupation','gender']).agg({'gender':'count'})

3)几个比较方便的函数【DataFrame.idxmax()、DataFrame.idxmin()、DataFrame.nlargetst()、get_loc()、np.where()、list.index()】
idxmax(),参考http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.idxmax.html
用来找到最大值的标签,返回第一个满足的值,axis参数用来控制轴向。
idxmin()与idxmax()类似,用来找到最小值的标签。
nlargetst(),参考https://www.geeksforgeeks.org/python-pandas-dataframe-nlargest/
返回前几大值,用keep参数处理重复值,没找到它的相反函数前几个最小的值,就先用排序来做吧。
get_loc()、np.where()、list.index()这三个方法都是用来查询值的索引的。
4)关于多重索引的问题
多重索引的求和,level参数的设置
参考

2019-01-21至2019-01-27本周总结_第3张图片
clipboard.png

假设,现在有一组数据,有多重索引【 a,b,c】和【1,7,0,12,8,4,10,14,9】

2019-01-21至2019-01-27本周总结_第4张图片
clipboard.png

按第一个索引求和level=0
2019-01-21至2019-01-27本周总结_第5张图片
clipboard.png

按第二个索引求和level=1
2019-01-21至2019-01-27本周总结_第6张图片
clipboard.png

多重索引的除法
DataFrame.div(other, axis='columns', level=None, fill_value=None),参考 http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.div.html
返回DataFrame/other的结果,当存在多重索引时,需要设置level。
2019-01-21至2019-01-27本周总结_第7张图片
clipboard.png

按照第二个索引进行匹配,列自动匹配,匹配不上或者无法相除【除数是0】的返回NaN
2019-01-21至2019-01-27本周总结_第8张图片
clipboard.png

关于div方法需要注意的是,用到level的时候,必须保证DataFrame和other有 相同的索引名称
2019-01-21至2019-01-27本周总结_第9张图片
clipboard.png

此时occupation_total是Series类型,虽然结果中看似index名称是occupation,但是Series对象只存在index和value,不存在index名称。
如果按照occupation进行匹配,会报错
2019-01-21至2019-01-27本周总结_第10张图片
clipboard.png

把occupation_total转成数据框,设置index是occupation就可以了。
5)apply、applymap和map的区别
6)numpy.int64和int不是一个数据类型
5)和6)之前总结过,就不说了。
最后,希望下周开始,自己能够尝试着用pandas做一些简单的小例子,向群里的小伙伴们学习!

你可能感兴趣的:(2019-01-21至2019-01-27本周总结)