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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章