数据处理工具pandas

来源:互联网 发布:qq飞车大q吧数据 编辑:程序博客网 时间:2024/05/18 02:59

pandas是python的一个数据处理库,功能强大,性能也不错,擅长处理各种表格。


1. 导入数据

singers_stat = pd.read_csv('data/data_6_7/singers_stat.csv',header=None)

如果源文件中没有表头的话,一定要加上header参数,不然会出现无法索引的情况


2. 选择数据

songs_stat[songs_stat[1]==singer][5].unique()[0]

(1)根据列的索引上面直接使用的是列号,列的索引也可以使用string,比如 songs_stat['singer']
(2)根据条件,
a. 可以使用 ==, >, < 等符号,
b. isin这种判断是否在某集合中的语句

c. 自动判断的切片 : df.ix[行位置或行标签, 列位置或列标签]

df.ix[:,('one','two')]
df.ix[:,:2]

(3)根据索引
loc[label] 这是严格基于标签的索引

iloc[inte] 这是严格基于整数位置的索引


3. 数据拼接

(a)contact

这部分我一直也没搞明白,join =outer和inner从学数据库那时候就是懵逼的

singers_df = pd.concat([singers_df, singer_sum_by_date], join='outer', ignore_index=True)
这样是把两个列数相同的dataframe上下拼接在一起,详细可以看这篇博客 http://my.oschina.net/lionets/blog/279785


(b)添加(行)列

添加行和列都可以通过Series。因为数据的关系,这次用的时候都是先把每列的Series建好,然后添加到原df,或者拼接为一个新的

singer_sum_by_date['id'] = pd.Series([singer_id]*rows_num, index=singer_sum_by_date.index)
singer_sum_by_date['date'] = pd.Series(singer_sum_by_date.index, index=singer_sum_by_date.index)
拼接的时候要注意指明index,不然它不知道你拼的是行还是列



4. 统计

pandas中的统计函数还是挺丰富,这次也是只用到了一小部分

(a)unique() : 统计一列所有的不同的值

(b)value_counts: 统计一列不同的值以及它们的数目

(c)groupby() 根据一个或多个键(可以是函数、数组或DataFrame列名)拆分pandas对象。计算分组摘要统计,如计数、平均值、标准差,或用户自定义函数。注意groupby之后是返回一个groupby对象,必须要对它进行计算才有意义,比如

singer_sum_by_date = singer_songs_data.groupby(2).sum()
按第3列分组并计算各组元素的和


5. 改变列的顺序

    cols = list(singer_sum_by_date)    cols.insert(0, cols.pop(cols.index('id')))    singer_sum_by_date = singer_sum_by_date.ix[:, cols]



6. 写入文件

singers_df.to_csv('data/data_6_7/singers_stat.csv',sep=',',header=False,index=False)

这篇只是介绍了最基本的功能,更详细以及强大功能可以看
http://python.jobbole.com/80972/
http://my.oschina.net/lionets/blog/279785
http://my.oschina.net/lionets/blog/277847
http://ju.outofmemory.cn/entry/114985


0 0
原创粉丝点击