美文网首页
Python学习笔记---pandas入门

Python学习笔记---pandas入门

作者: 白云梦_7 | 来源:发表于2018-08-24 21:06 被阅读0次

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

相关文章

网友评论

      本文标题:Python学习笔记---pandas入门

      本文链接:https://www.haomeiwen.com/subject/awhmiftx.html