pandas api总结

基础部分:创建,简单提取,简单分析

1.创建表格

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

s = pd.Series([1,3,5,np.nan,6,8])            #创建series数组,默认创建整数索引
dates = pd.date_range('20140201',periods=6)  #创建时间索引,开始为2014 02 01 ,持续6次
data = pd.DataFrame(np.random.rand(6,4),index=dates,columns=list('ABCD'))#创建DataFrame

注:最终表格格式
输出类容
2.按要求提取表格信息

type = data.dtypes                           #返回每行的格式
head3 = data.head(3)                         #打印前三行、
tail5 = data.tail(5)                         #打印后5行

index = data.index                           #返回行名称‘
columns = data.columns                       #返回列名称
valuse = data.values                         #返回所有数据

3 对数据进行排序及转置处理

dataT = data.T                                #d对数据进行转置
data_sort_in0 = data.sort_index(axis=0,inplace=False,ascending=True)         #按行标签大小进行升序
#排列,inplace为是否替换原数据,默认FLASE,ascending代表是否按升序,默认True
data_sort_in1 = data.sort_index(axis=1,inplace=False,ascending=False)        
data_sort_value = data.sort_values(by=['A','B'],ascending=[True,False])  #按A,B进行排序,先顺序后降序

注:此为data_sort_in1 = data.sort_index(axis=1,inplace=False,ascending=False) 后结果,按列排序
在这里插入图片描述
4 数据信息整理

describe = data.describe()                   #数据统计:个数,均值,标准差,最大,最小
mean = data.mean()                           #返回每列的平均值,同时支持min,max,sum操作
count = data.value_counts()                  #统计数值出现的次数 

注:下图为进行describe后出现的结果,包括个数,平均数,标准差和其他数据
在这里插入图片描述
5 apply 将函数操作用于表格的每一行数据并返回结果

dataa = data.apply(lambda x:x.max()-x.min(),axis=1)                 #apply,将函数应用于每一行,默认是对列进操作

6 数据整体移动 shift

s=pd.Series([1,3,5,np.nan,6,8],index=dates).shift(periods=2,axis=0) #将横,纵排数据整体上下移动,不循环。空补NAN

数据获取

1 简单获取

A = data.A                            #单独选择列名称,返回series,
B = data[2:5]                         #切片操作,返回行切片

2 通过标签选择,即通过loc指定标签名称

dataa = data.loc['2014-02-03' : '2014-02-05','A':'C'] #包括首尾

3 通过位置进行选择,即通过iloc指定位置

dataa = data.iloc[3]               #第3行
dataa = data.iloc[2:3,1:2]
dataa = data.iloc[[1,2,3],[0,2]]

4 通过布尔索引

dataaa = data[data.A>0]
dataaa = data[data.A.isin(['a','c'])]

数据修改

1.通过位置改值

data.iat[0,1] = 0

2.通过Series新列

s1 = pd.Series([1,2,3,4,5],index=pd.date_range('20140201',periods=5))      #数据不全,自动补NAN
data['F'] = s1

3.通过numpy数组设置值

data.loc[:,'D'] = np.array([5]*len(data))

4.重构索引以创建新表 reindex

data1 = data.reindex(index=datas[0:4],columns=list(data.columns)+['E'])  #复制数据并对应行数数据进行操作
data1.loc[datas[1:3],'E']=2             

缺失值操作

data2= data1.dropna()               #删除存在缺失值的行
data3 = data1.fillna(value=3)       #将缺失值替换为3
data4 = pd.isnull(data1)            #返回布尔数组,非null则返回ture

数据合并

1.concat 较为简单的上下,左右合并

#详细参考 https://blog.csdn.net/mr_hhh/article/details/79488445
data1 = data.iloc[1:3]
data2 = data.iloc[5:]
data3 = pd.concat([data1,data2],axis=0,keys=['a','b'])
#key参数标明合并表的内容属于那一部分,axis为列操作

注:下图为最后结果
在这里插入图片描述

2.merge 类似并集操作


```python
left=pd.DataFrame({'key':['foo','xx'],'lval':[1,2]})
right=pd.DataFrame({'key':['foo','x'],'rval':[4,5]})
dataa = pd.merge(left,right,on='key')                    #依据key列是否相同进行操作

注:下图为最后结果
在这里插入图片描述

3 append 将行连接到dataframe上

df = pd.DataFrame(np.random.rand(8,4),columns=['A','B','C','D'])
s = df.iloc[3]
df.append(s,ignore_index=True)
# ignore_index参数表示是否使用df表index,true则表示新创建一个index 从0开始

数据分组

#分组
df = pd.DataFrame({"A":['foo','bar']*4,
                   "B":['one','tow']*4,
                   "C":np.random.rand(8),
                   "D":np.random.rand(8)})

ga = df.groupby('A')       #获取分组元素,无法直接打印
groups = ga.groups         #获取分组的整体信息#'bar': Int64Index([1, 3, 5, 7], dtype='int64'), 'foo': Int64Index([0, 2, 4, 6], dtype='int64')}
size = ga.size()           #获取每组的个数
bar = ga.get_group('bar')  #获取每个组的详细信息
mean = ga.mean()           #获取每组的平均值,包括min,max,sum

#分组双索引
df.groupby(['A','B']).sum()

画图

t = pd.Series(np.random.randn(1000),index=pd.date_range(('20000101'),periods=1000))
t =t.cumsum()
t.plot()
plt.show()

数据读写

df = pd.DataFrame(np.random.randn(1000,4),columns=list('ABCD'))
df.to_csv("data.csv")
df = pd.read_csv("data.csv",index_col=0)
print(df)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章