《用python进行数据分析》语法要点总结(1)

来源:互联网 发布:维多利亚2新手国家知乎 编辑:程序博客网 时间:2024/06/05 02:30

baby_name 小程序
(1)将不同的文件链接起来
frame存放不同的csv文件,给frame添加新的year列,append到piece上,最后用pd.concat将存放多个序列的piece链接,默认axis=0,行链接,就是纵向拼接
(2)添加出生比例prop,先定义一个add函数,记得将数据类型转化为float再求和并做除法。再names这个df上调用add函数,记得先按照year和sex先groupby再apply。
注意:为什么不能直接对names中birth之一列直接求prop,再添加?这样得到的是某年某个性别的名字以所有年份所有性别的名字数为基本的比例。 Groupby是按照年份和性别划分好子表,再在子表的基础上求birth的比例
(3)sort_index对df排序,之后取出前1000的子集。也是先按照性别和年龄聚合。发现直接对names的birth求top1000也可以,只是输出的年份和性别是混的。
(4)分析明明趋势里面,主要注意pivot_table透视表生成的方法。df.plot 横坐标是df的行,纵坐标是列,可以同时画好几条线。
(5)分析命名的多样性–计算占总人数前50%的不同名字的数量。group.prop.cumsum().searchsorted(0.5)+1得到prop累加值以后查找累加到0.5的行数再加1。对每个聚合后的子表都返回了一个int halfnum。对应某年某个性别只有一个数,利用unstack生成一个新的df,一个性别对应一个年份,再绘图。
(6)最后一个字母。取字符串的某几个字母:lastletter=lambda x:x[-1] 从一个df里面应用这个方法,df.colum_name.map(),最后可以给这个新生成的df一个名字。
df.reindex 选出满足行索引或者列索引为某些特定值的行。
(7)末尾字母趋势。table.sum( ) 按列求和。table/table.sum() 某个字母的比例。
(8)男女名字的转换 。unique()返回其name数组中所有不同的值(如果是数字,按照从小到大的顺序排列)。返回一个array,找到含有lesl的下标bool序列:
mask =np.array(['lesl' in x.lower() for x in all_names]) #是一个false true的序列
用mask筛选array序列lesl_like, 用lesl_like配合isin函数可以筛选出top1000中的序列。再接着用透视表求和,做除法算比例,最后绘制。
哎,虽然很简单,新手上路对很多函数的使用不太熟悉,总体看起来还是蛮有意思的,加个图结束:
这里写图片描述

原创粉丝点击