Python学习笔记---pandas入门

from pandas import Series,DataFrame
import pandas as pd

数据结构

☆Series
最重要功能是在算数运算中会自动对齐不同索引的数据
data = Series(l,index=([])) #l可为列表,若不指定index,默认0-(len(l)-1);也可为字典,index自动有序排列,不指定index,则索引为key,第二列为value,指定索引后,会返回匹配上的对,没有匹配上的索引后是NaN
Series的属性:
data.values #第二列
data.index #第一列,可通过赋值方式就地修改
data.name #指定后出现在最后一行
data.index.name #指定后出现在第一行
Series的方法:
data.isnull() #是否为缺失值,返回布尔值
☆DataFrame
可看做共用一组索引的的Series组成的字典
frame = DataFrame(data,columns=[])#data可为字典,后者指定列的排列顺序
frame['col'];frame.col
frame.columns#列名属性
del frame['']#删除列
frame.index.name= ;frame.columns.name= ;frame.values
data还可以是嵌套字典,外层字典的键为列,内层的键作为行索引
☆索引对象
Index对象不可修改

基本功能

☆重新索引
obj.reindex(data,method='ffill')#ffill前向值填充,bfill后向值填充,还可以直接定义值fill_value=xxx
☆丢弃指定轴上的项
frame.drop('');frame.drop([,],axis=1)#默认丢弃行,可以指定轴
☆索引、选取和过滤
索引
可根据index或序号索引

In [14]: data = DataFrame(np.arange(16).reshape((4,4)),index = ['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four'])

In [15]: data
Out[15]:
          one  two  three  four
Ohio        0    1      2     3
Colorado    4    5      6     7
Utah        8    9     10    11
New York   12   13     14    15

In [16]: data[1:3]
Out[16]:
          one  two  three  four
Colorado    4    5      6     7
Utah        8    9     10    11

In [17]: data['Colorado':'New York']#利用标签的切片运算与普通的Python切片运算不同,其末端是包含的
Out[17]:
          one  two  three  four
Colorado    4    5      6     7
Utah        8    9     10    11
New York   12   13     14    15

loc——通过行标签索引行数据
iloc——通过行号索引行数据
ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合)
同理,索引列数据也是如此!

In [48]:  data.loc[:,'two':'three']
Out[48]:
          two  three
Ohio        1      2
Colorado    5      6
Utah        9     10
New York   13     14

In [49]:  data.iloc[:,1:2]
Out[49]:
          two
Ohio        1
Colorado    5
Utah        9
New York   13

In [43]: data.loc['Ohio':'Utah']
Out[43]:
          one  two  three  four
Ohio        0    1      2     3
Colorado    4    5      6     7
Utah        8    9     10    11

In [44]: data.iloc[0:2]
Out[44]:
          one  two  three  four
Ohio        0    1      2     3
Colorado    4    5      6     7

算术运算方法
.add()
.sub()
.div()
.mul()

默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播
如果希望匹配行并在列上广播,则必须使用算术运算方法。

排序和排名
Series
按索引排序:obj.sort_index()
按值排序:obj.order()
DataFrame
按索引排序:obj.sort_index(axis=0,ascending=False)
按值排序:obj.sort_index(by='')#列名,根据该列的值排序

汇总和计算描述统计

Series的corr方法用于计算两个Series中重叠的,非NA的,按索引对齐的值的相关系数。
s1.corr(s2)
DataFrame的corr方法将以DataFrame的形式返回完整的相关系数矩阵
df.corr()
利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数
df1.corrwith(df2)#默认按列

处理缺失数据

NA处理方法np.nan
dropna
fillna
isnull
notnull

In [87]: df = DataFrame(np.random.randn(7,3))

In [89]: df.ix[:4,1]=np.nan
In [90]: df.ix[:2,2]=np.nan

In [91]: df
Out[91]:
          0         1         2
0  0.396967       NaN       NaN
1  0.046879       NaN       NaN
2 -0.659653       NaN       NaN
3 -0.567351       NaN -1.396844
4  0.493285       NaN -1.226272
5  1.248757  1.182155  1.816061
6 -0.551892 -0.256985  0.758178

In [92]: df.dropna()#默认只要含NA就丢弃
Out[92]:
          0         1         2
5  1.248757  1.182155  1.816061
6 -0.551892 -0.256985  0.758178

In [93]: df.dropna(how='all')#用how全部为NA的才丢弃
Out[93]:
          0         1         2
0  0.396967       NaN       NaN
1  0.046879       NaN       NaN
2 -0.659653       NaN       NaN
3 -0.567351       NaN -1.396844
4  0.493285       NaN -1.226272
5  1.248757  1.182155  1.816061
6 -0.551892 -0.256985  0.758178

In [95]: df.dropna(thresh=2)#丢弃非NA数小于2的
Out[95]:
          0         1         2
3 -0.567351       NaN -1.396844
4  0.493285       NaN -1.226272
5  1.248757  1.182155  1.816061
6 -0.551892 -0.256985  0.758178

填充缺失数据
_=df.fillna(x,inplace=True)
df.fillna(method='ffill',limit=2)#limit是向前向后可以连续填充的最大数量

层次化索引

data = Dataframe(data,index=[[],[]],columns=[[],[]])#MultiIndex

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

推荐阅读更多精彩内容