1. path = “E:\\XX\\XX\names\\yob1880.txt”
因为是字符串,所以要加转义字符才能顺利找到路径
2. pandas.read_csv()
读取CSV(逗号分割)文件到DataFrame,也支持文件的部分导入和选择迭代。一些参数:
(1)filepath_or_buffer:str,pathlib,str,pathlib.Path,py._path.local.LocalPathor any object with a read() method (such as a file handle or StringIO)。可以是URL,可用URL类型包括:http, ftp, s3和文件。
(2)sep : str, default ‘,’指定分隔符。如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。并且忽略数据中的逗号。
3. names1880.groupby('sex').births.sum()
分组运算有时也被称为“split-apply-combine” 操作。其中的 “split”便是借由 obj.groupby() 方法来实现的。.groupby(by=None,axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False) 方法作用于一条轴向上,并接受一个分组键(by)参数来给调用者分组。分组键可以是Series 或列表,要求其长度与待分组的轴一致;也可以是映射函数、字典甚至数组的某条列名(字符串),但这些参数类型都只是快捷方式,其最终仍要用于生成一组用于拆分对象的值。
当想要只看某一(些)列的时候,可以通过索引来实现,在 groupby 方法调用前后均可(这是一种语法糖)。
在分组上应用size()、sum()、count()等统计函数,能分别统计分组数量、不同列的分组和、不同列的分组数量。
对于分组的某一列或者多个列,应用agg(func)可以对分组后的数据应用func函数。例如:用group1['data1'].agg('mean')对分组后的’data1’列求均值。当然也可以推广到同时作用于多个列和使用多个函数上。
apply()不同于agg()的地方在于:前者应用于dataframe的各个列,后者仅作用于指定的列。
4. names = pd.concat(pieces, ignore_index=True)
concat默认是按行将多个DataFrame组合到一起。
必须指定ignore_index=True,因为我们不希望保留read_csv所返回的原始行号
5. total_births=names.pivot_table('births',index='year',columns='sex',aggfunc=sum)
pivot_table()方法可以产生类似于excel数据透视表的结果,相当的直观。
其中参数index指定“行”键,columns指定“列”键。
aggfunc参数表示聚合函数或函数列表,默认值为mean(求平均),可以是任何对groupby有效的函数
margins参数表示添加行/列小计和总计,默认False。
6. np.allclose(names.groupby(['year','sex']).prop.sum(),1)
在执行这样的分组处理时,一般都应该做一些有效性检查,比如验证所有分组的prop的总和是否为1。由于这是一个浮点数类型,所以我们用np.allclose来检查这个分总计值是否足够近似于(可能不会精确等于)1
7. pandas.DataFrame.sort_values()
几个参数:by 根据此参数来决定表格的轴 ascending。True表示升序,False表示降序,默认True。
8. pandas.DataFrame.cumsum()
返回请求轴的累计和
9. pandas.Series.searchsorted()
prop_cumsum =df.sort_values(by='prop',ascending=False).prop.cumsum()
prop_cumsum.searchsorted(0.5)
先将表格根据prop列进行排序,然后用searchsorted方法查找在哪里插入0.5这个数值。返回的结果类型是一个narray,因为是从0开始的,之后用的时候记得+1。
10. 关于stack和unstack
diversity =top1000.groupby(['year','sex']).apply(get_quantile_count)
diversity = diversity.unstack('sex')
二重MultiIndex的Series可以unstack()成DataFrame
DataFrame可以stack成拥有二重MultiIndex的Series
(对于multindex的大概就是索引值中存在多元的list,索引本身建立之后不可变)
11. 关于DataFrame选取数据方法loc,iloc,ix
df = pd.DataFrame(np.random.randn(6,4),columns= list(‘ABCD’))
对于这样一个Data Frame来说,建立的时候规定了列名ABC D,行名是默认的数字
.loc可以获取行,如果想要选择行中相应的列,需要知道对应的列名
.iloc也是获取行,但是如果想要选择行中相应的列,只需要知道列的序号(所以.iloc可以对列进行切片)
.ix 的功能就更强大了,它允许我们混合使用下标和名称进行选取。 可以说它涵盖了前面所有的用法。基本上把前面的都换成df.ix都能成功,但是有一点,就是df.ix [ [ ..1.. ], [..2..] ], 1框内必须统一,必须同时是下标或者名称,2框也一样。