美文网首页
Pandas常用接口

Pandas常用接口

作者: 林逸凡_lyf | 来源:发表于2018-10-11 10:32 被阅读0次

Series和Frame

Series类似于一维数组,由一组数据和索引组成

obj = Series([4, 7, -5, 3]) # 默认索引为0开始的int类型
obj = Series([4, 7, -5, 3], index = ['d', 'b', 'a', 'c']) # 手动设置索引
obj.values # 获得数据
obj.index # 获得索引
obj['d'] # 通过下标获取值
obj[['d', 'b', 'c']] # 一次获取多个值
'b' in obj # Series也可以看作定长有序字典
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj = Series(sdata) # 通过python字典创建Series
pd.isunll(obj) # 判断obj中哪些值为NaN,对应pd.notnull(), obj.isnull()
obj.name = 'population'
obj.index.name = 'state' # 给obj设置名字

DataFrame是表格型数据,可以看成是Series组成的字典

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 
        'year': [2000, 2001, 2002, 2001, 2002], 
        'population': [1.5, 1.7, 3.6, 2.4, 2.9]} # 创建data
frame = DataFrame(data) # 创建DataFrame
frame = DataFrame(data, columns = ['year', 'state', 'population']) # 设定column顺序
frame['state'] # 获取Series,等效于frame.state
frame.ix[2] # 获取行内容
frame.debt = np.arange(5.) # 给列赋值
frame['debt'] = Series([-1.5, -2.6, -4.5], index = ['TWO', 'THREE', 'FIVE']) # 通关Series给列赋值,依据index填充
frame['eastern'] = frame.state == 'Ohio' # 为不存在的列赋值会创建新列
del frame['eastern'] # 删除列

下图是可以用于构建DataFrame的数据


initlist1.png

Index也是一个数组对象,只读

index = obj.index
'Ohio' in frame.cloumns # columns也是一个index数组

基础功能

reindex

# Series
obj = Series([4.5, 7.2, -5.3, 3.6], index = ['d', 'b', 'a', 'c'])
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e']) # reindex,不存在用NaN
obj.reindex(['a', 'b', 'c', 'd', 'e'], fill_value=0) # 用0填充空值
obj = Series(['blue', 'purple', 'yellow'], index = [0, 2, 4])
obj7.reindex(range(6), method='ffill') # 前项值填充,bfill后项值填充
# DataFrame
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a','c','d'], columns=['Ohio','Texas','California'])
frame.reindex(['a', 'b', 'c', 'd']) # 修改索引
states = ['Texas', 'Utah', 'California']
frame.reindex(columns=states) # 修改列索引
frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill', columns=states) # 同时修改行列索引
frame.ix[['a', 'b', 'c', 'd'], states] # 等效于上一行

下图是reindex的参数列表


paralist1.png

drop用于丢弃行

data = DataFrame(np.arange(16).reshape((4, 4)), index = ['Ohio', 'Colorado', 'Utah', 'New York'], columns = ['one', 'two', 'three', 'four'])
data.drop(['Colorado', 'Utah']) # 丢弃行
data.drop('two', axis = 1) # 丢弃列

pandas的index切片末端是包含的

obj = Series(np.arange(4.), index = ['a', 'b', 'c', 'd'])
obj['b'] # == obj[1]
obj['b':'d'] # == obj[1:4],前面包含,后面不包含
data.ix['Colorado', ['two', 'three']] # 使用ix选取子集,使用column名
data.ix[['Colorado', 'Utah'], [3, 0, 1]] # 使用column序号选取

算数运算

df1 = DataFrame(np.arange(9.).reshape((3, 3)), columns = list('bcd'), index = ['Ohio', 'Texas', 'Colorado'])
df2 = DataFrame(np.arange(12.).reshape((4, 3)), columns = list('bce'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])
df1 + df2 # 使用运算符
df1.add(df2, fill_value = 0) # 使用函数

Series和DataFrame相加使用广播
np的函数也可以使用在pandas对象上

frame = DataFrame(np.random.randn(4, 3), columns = list('bde'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])
np.abs(frame)
f = lambda x: x.max() - x.min()
frame.apply(f) # 在行上应用函数
frame.apply(f, axis = 1) # 在列上应用函数

排序

obj = Series(range(4), index = ['d', 'a', 'b', 'c'])
obj.sort_index() # 根据index排序
obj.order() # 按值排序
frame.sort_index(by='b') # DataFrame按某列排序
frame.sort_index(by=['a', 'b']) # 按多列排序
obj.rank() # 排名,破坏平级关系
paralist2.png

index是可重复的

obj = Series(range(5), index = ['a', 'a', 'b', 'b', 'c'])
obj.index.is_unique # False
obj['a'] # 返回一个Series

数学统计

df = DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.75, -1.3]], index = ['a', 'b', 'c', 'd'], columns = ['one', 'two'])
df.sum() # 列求和
df.sum(axis = 1) # 行求和
df.idxmin() # 返回最小值的index
df.cumsum() # 累积求和
funclist7.png funclist8.png
相关系数与协方差
相关系数:https://zh.wikipedia.org/wiki/%E7%9A%AE%E5%B0%94%E9%80%8A%E7%A7%AF%E7%9F%A9%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0
协方差:https://zh.wikipedia.org/wiki/%E5%8D%8F%E6%96%B9%E5%B7%AE
returns.MSFT.corr(returns.IBM) # 计算相关系数
returns.MSFT.cov(returns.IBM) # 计算协方差

缺失数据处理

data = Series([1, np.nan, 3.5, np.nan, 7])
data.dropna() # 抛弃nan数据, 等价于data[data.notnull()]
data.fillna(0) # 使用0填充nan数据
data.fillna({1:0.5, 3:-1}) # 对不同行的nan填充不同数据
data.fillna(0, inplace=True) # fillna默认返回新对象,使用inplace参数进行就地修改
# DataFrame的dropna()函数默认丢弃行
paralist3.png

层次化索引

data = Series(np.random.randn(10), index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
data.index # MultiIndex (类似于字典)
data.unstack() # 将数据重新安置到DataFrame中
data.unstack().stack() # 逆运算
frame = DataFrame(np.arange(12).reshape((4, 3)), index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']]) # DataFrame中行列都可以用MultiIndex
frame.index.names = ['key1', 'key2']
frame.columns.names = ['state', 'color'] # 给行列设置名称
frame.swaplevel('key1', 'key2') # 交换层级
frame.sum(level='key2') # 选取level求和
frame = DataFrame({'a': range(7), 'b': range(7, 0, -1), 'c': ['one', 'two', 'three', 'four', 'five', 'six', 'seven'], 'd': [0, 1, 2, 0, 1, 2, 3]}) # 按列创建DataFrame
frame2 = frame.set_index(['c', 'd']) # 将列转换为index
frame2.reset_index() # 将index转换为列

数据存取

读取数据

pd.read_csv('ch1/ex1.csv') # 默认间隔符是逗号
pd.read_csv('ch1/ex2.csv', names=['a', 'b', 'c', 'd', 'message']) # 设定列名
pd.read_table('ch1/ex1.csv') # 默认间隔符是制表符
pd.read_table('ch1/ex3.csv', sep='\s+') # 也可以使用正则表达式作为分隔符
paralist4.png
paralist5.png

写入数据到文本

data.to_csv('ch1/out.csv')
Series.from_csv('ch1/tseries.csv') # 读取数据到Series

相关文章

  • Pandas常用接口

    Series和Frame Series类似于一维数组,由一组数据和索引组成 DataFrame是表格型数据,可以看...

  • 【转】python pandas速查笔记

    pandas接口速查 import pandas as pdimport numpy as np 导入数据 pd....

  • 2021-12-31 Python-23

    pandas pandas数据结构 pandas 有 2 个常用的数据结构:Series 和 Dataframe一...

  • 从Excel到Python:最常用的36个Pandas函数

    从Excel到Python:最常用的36个Pandas函数 本文涉及pandas最常用的36个函数,通过这些函数介...

  • pandas常用函数总结

    pandas常用函数 导入并读取数据 常用的pandas数据读取函数 注意:csv与tsv格式文件都是使用pd.r...

  • Pandas里面常用的一些数据分析函数总结

    Pandas里面常用的一些数据分析函数总结 import pandas as pdimport numpy as ...

  • pandas常用

    索引 不会得到新的对象 索引后得到对象的直接赋值会更改源df,而df调用方法会产生一个新的df。 1 df []索...

  • Pandas学习笔记

    Pandas 简介 Pandas是Python中进行数据处理的一个常用库,利用Pandas可以高效地处理格式化数据...

  • python接口测试

    一、requests库二、pandas库三、接口示例 前言本文档讲述使用python requests库请求接口、...

  • pandas入门

    引入pandas和常用的数据结构Series,DataFrame 一、pandas的数据结构的介绍 1.Serie...

网友评论

      本文标题:Pandas常用接口

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