pandas笔记

1.计算数组a中各个元素出现的次数
from collections import Counter
count_list=Counter(a)
#获取出现次数为前10的元素
count_list.most_common(10)
2.安装pandas

下载适合你python版本的 .whl 文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/


然后 pip install 包的名字.whl

3.pandas的函数

①read_table() 读取数据,并整理成DataFrame类型的表格

import pandas as pd
unames = ['user_id','gender','age','occupation','zip']
users = pd.read_table('users.dat',sep='::',header=None,names=unames)

sep字段:指定分割符
names字段:指定表格的表头
其中users.dat (UserID::Gender::Age::Occupation::Zip-code)

②merge() 根据列名连接表格

data=pd.merge(pd.merge(ratings,users),movies)

其中
users.dat (UserID::Gender::Age::Occupation::Zip-code)
movies.dat (MovieID::Title::Genres)
ratings.dat (UserID::MovieID::Rating::Timestamp)

③pivot_table() 聚合

mean_ratings_by_gender = data.pivot_table(values='rating',index='title',columns='gender', aggfunc='mean')

④groupby() 分组

ratings_by_title = data.groupby('title').size()
active_titles = ratings_by_title.index[ratings_by_title>=250]
#取评分数据大于250条的电影名称

根据title进行分组,利用size()获得一个含有每个分组的大小的Series对象
可能遇见报错见:http://blog.csdn.net/xiangweinn/article/details/78675369

⑤sort_index() /sort_values() 根据某列排序

mean_ratings_by_gender.sort_index(by='F',ascending=False)
mean_ratings_by_gender.sort_values(by='diff',ascending=True).head()

根据 F / diff 列 降序/升序 排序

⑥std() 计算标准差

#每个电影的得分标准差
rating_std_by_title = data.groupby('title')['rating'].std()
#根据标准差降序排列
rating_std_by_title.order(ascending=False)[:10]
4.pandas的数据结构

pandas有两个主要的数据结构:Series 和 DataFrame

①Series类似于一维数组,有值有索引


Numpy运算
obj2[obj2 > 0] 筛选obj2中大于0的值
obj2 *2 数值乘2
np.exp(obj2) 计算e指数

数据对齐功能,如果传入的所以在数据中找不到,就会填充NaN值

Series对象本身及其索引都有一个name属性,索引可以通过以下方式修改:

②DataFrame是一个表格型的数据结构,每列可以是不同数据类型,既有行索引又有列索引。
构建DataFrame

通过字典标记的方式或者属性的方式,可以将DataFrame的列获取为一个Series:
获取第三行:

使用Series为DataFrame精确赋值:

为不存在的列赋值将会新建一列,del关键字删除列,对于嵌套字典,外层字典的键作为列,内层键则作为行索引。

③索引对象
Index 对象是不可修改的,功能类似一个固定大小的集合

Index的方法和属性
方法 属性
append 连接另一个Index对象,产生一个新的Index
diff 计算差集,得到一个新的Index
intersection 计算交集
union 计算并集
isin 计算一个指示各值是否都包含在参数集合中的布尔型数组
delete 删除索引i处的元素,并得到新的Index
drop 删除传入的值,并得到新的Index
insert 将元素插入到索引i处,并得到新的Index
is_monotonic 当各元素均大于等于前一个元素时,返回True
is_unique 当Index没有重复值时,返回True
unique 计算Index中唯一值的数组
5.基本功能

①重新索引 reindex()


reindex()的method选项



ffill/pad: 前向填充(或搬运)值
bfill/backfill:后向填充(或搬运)值


注意到:只有当为frame重新索引(index不能为空)时,填充才生效!

②丢弃指定轴上的项 drop()



对于DataFrame,可以删除任意轴上的索引值:


③索引、选取和过滤
Series索引的工作方式类似Numpy数组的索引,只不过series的索引值不只是整数。且标签切片是包含末端的!


在DataFrame的行上进行标签索引 ix[]


④算数运算和数据对齐
Series\DataFrame对象相加时,没有重叠的位置就会产生NA值,解决方法:
df1.add(df2,fill_value=0)
df1.reindex(columns=df2.columns,fill_value=0)
另外有:减法sub()、除法div()、乘法mul()

⑤DataFrame和Series之间的运算



最后的方法是匹配行且在列上广播!

⑥函数应用和映射


⑦排序
obj.sort_index() 根据Series的索引排序
frame.sort_index()根据行名排序
frame.sort_index(axis=1)根据列名排序
obj.order() 根据值排序
frame.sort_index(by='b')根据b列中的值排序
frame.sort_index(by=['a','b'])根据a列和b列中的值排序

没太看懂的rank()方法 *


补充:轴标签(索引值)可以重复,例如obj=Series(range(5),index=['a','a','b','b','c'])

6.汇总和计算

①描述和汇总统计

方法 说明
count 非NA 值的个数
describe 针对Series或各DataFrame列计算汇总统计
min\max 计算最小值、最大值
argmin\argmax 计算最小值、最大值的索引位置(整数)
idxmin\idxmax 计算最小值、最大值的索引值(标签)
quantile 计算样本的分位数(0到1)
sum 值的总和
mean 值的平均值
median 值的算数中位数(0.5)
mad 根据平均值计算平均绝对离差
var 样本值的方差
std 样本值的标准差
skew 样本值的偏度(三阶矩)
kurt 样本值的峰度(四阶矩)
cumsum 样本值的累计和,把上一行累计到下一行,依次类推
cummin\cummax 累计最小值和最大值,第n行的值是前n行该列的最值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化

对于Series对象obj,obj.sum()返回一个数值结果。
对于DataFrame对象df,df.sum()返回一个Series,每个值是某一列(纵向)的和;而df.sum(axis=1)返回的Series,每个值是某一行的和。
同理,对于mean()方法等,默认的都是纵向计算,计算列!


②唯一值、值计数


7.处理缺失数据

①过滤缺失数据


对于DataFrame对象,dropna()默认丢弃任何含有缺失值的行,传入how='all'将只丢弃全为NA的那些行。


②填充确实数据fillna()



fillna()函数的参数

参数 说明
value 用于填充缺失值的标量值或字典对象
method 填充方式,如ffill\bfill
limit 前向和后向填充的的最大数量,和method配合使用
axis 待填充的轴
inplace 修改调用者对象而不产生副本,如上图
8.层次化索引

①定义
层次化索引使你在一个轴上拥有多个索引级别



多层索引的Series对象可以移植到一个DataFrame对象上


②重排分级顺序swaplevel()
重新调整某条轴上各级别的顺序,或根据指定级别上的值对数据进行排序

③根据级别做汇总统计:level字段


④使用DataFrame的列
将DataFrame的一个或多个列当作行索引来用,或者希望将行索引变成DataFrame的列,怎么实现呢?


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容