您的位置:首页 > 编程语言 > Python开发

利用Python 进行数据分析 ch02

2017-01-21 21:12 561 查看
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框也一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: