pandas學習筆記

2021-08-29 02:21:43 字數 3116 閱讀 2417

1、建立物件,瀏覽資料

##建立物件,瀏覽資料

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

#建立series

s=pd.series([1,2,4,6,np.nan,9,10],index=list('abcdefg'))

#建立二維陣列

data=pd.date_range('20130101',periods=6)

#index行索引,columns列索引

df=pd.dataframe(np.random.randn(6,4),index=data,columns=['a','b','c','d'])

#將字典型資料傳入dataframe

df2=pd.dataframe()

#基本屬性

df2.dtypes

df2.shape

df2.a #欄位也可以作為基本屬性

df2 #......

#瀏覽資料

df.head(3) #取頭部資料

df.tail(3) #取尾部資料

df2.index

df2.columns

df.values

df.describe()

df.sort_index(axis=1,ascending=false) #按軸排序,axis=1,按cloumns欄位降序排列

df.sort_values(by='a',ascending=false)

#選擇資料

df.a

df['a']

df[0:3] #通過選擇行切片

df['20130102':'20130104']

#使用標籤獲取橫截面

data[0] #第乙個行標籤 (index[0])

df.loc[data[0]] #行標籤的該行內容

#按標籤選擇多軸

df.loc[data[0]:data[2],['a','c']]

df.loc['20130102':'20130104',['a','c']]

#使用位置獲取元素

df.iloc[3:5,0:2]

df.iloc[[1,2,4],[0,2]]

#布林索引

df[df.a>0] #篩選出所有a列大於0的數值,所在行

df[(df.a>0) & (df.b<0)]

#使用isin()進行過濾

df3=df.copy()

df3['e']=['one','two','three','four','two','three'] #新增一列,代表類別

a=df3[df3['e'].isin(['two','three'])] #分類篩選

#設定有關

s1=pd.series([1,2,3,4,5,6],index=pd.date_range('20130102',periods=6))

df['f']=s1

#按標籤設定值

df.at[data[0],'a']=0

#按位置設定值

df.iat[0,1]=0

#通過分配numpy陣列設定

df.loc[:,'d']=np.array([5]*len(df))

#索引重排,但不改變df值

df.reindex(index=data[0:4],columns=list(df.columns)+['e'])

df.loc[data[0]:data[1],'e']=1 #新建e列,更新0行和1行的資料,包括1行

#缺失值處理

df.dropna(how='any') #刪除任何含有缺失值的行

df.fillna(value=5) #填充缺失值

pd.isnull(df) #檢視是否有空值

2、常規操作

#求平均值

df.mean() #每列平均值

a=df.mean(1) #每行平均值

#統計值的頻數

s = pd.series(np.random.randint(0, 7, size=10))

s.value_counts()

#字串方法,和python用法類似

s=pd.series(['a','b','afa','fsdfw','tyte'])

s.str.lower() #全部小寫

3、資料合併

#資料合併

df=pd.dataframe(np.random.randn(10,4))

pieces=[df[:3],df[3:7],df[7:]] #切片,形成列表

pd.concat(pieces) #合併

#merge

left=pd.dataframe()

right=pd.dataframe()

pd.merge(left,right,on='key') # 根據key值,將left,right合併

s=df.iloc[3]

#group

df=pd.dataframe()

a=df.groupby('a').sum()

b=df.groupby(['a','b']).sum()

#reshaping

list(zip(*[['bar', 'bar', 'baz', 'baz','foo', 'foo', 'qux','qux'],

['one', 'two', 'one', 'two',

'one', 'two', 'one', 'two']]))

4、其餘資料操作見

5、不均等分割資料集

df = dataframe(list(info.find()))

bins=[0,10,50,100,200,500,1000,2000,5000,10000] #分割界限

counts=series([int(i)for i in df.comments]) #格式化

cats=pd.cut(counts,bins) #分割

a=pd.value_counts(cats) #每一區域計數

pandas學習筆記

import numpy as np import pandas as pd obj2 pd.series 4,7,5,3 index d b a c obj2 out 99 d 4 b 7 a 5 c 3 dtype int64 a b pd.series a bout 102 a 1 b 2 c...

pandas學習筆記

1.series 類似numpy中的一維陣列,表示為索引 從0開始 和值。建立 import pandas as pd,numpy as np s1 pd.series np.arange 10 s2 pd.series 12 2,5 s3 pd.series 含有的屬性 s1.values s1....

pandas學習筆記

pandas像是python中的excel 它的基本資料結構是 在pandas中叫 dataframe 可以對資料進行各種操作和變換。它還能做很多其他的事。import pandas as pd data pd.read csv files.csv seq顯示地宣告分隔符,encodig顯示地宣告編...