資料分析之Pandas

2021-09-11 06:09:49 字數 4349 閱讀 2802

from pandas import series, dataframe

import pandas as pd

import numpy as np

states = ['california', 'ohio', 'oregon', 'texas']

year = [2000, 2001, 2002, 2003]

value = [35000, 71000, 16000, 5000]

names = ['bob', 'steve', 'jeff', 'ryan']

i1 = ['one', 'two', 'three', 'four']

sdate =

obj = series([4,7,-5,3],index=i1) # series的建立,若不指定index則預設是0,1,2,3

obj1 = series(sdate) # 也可由字典建立series,鍵作為index

obj2 = series(sdate, index=states) # 指定index時,若字典中找不到對應值就會顯示nan

print(obj, obj1, obj2, sep='\n')

print(obj.values, obj1.index, sep='\n')

print(obj['two'], obj[['three', 'one', 'two']], obj.three, sep='\n') # 類似字典的方法檢視值,也可用屬性的方法

obj1['ohio'] = 50 # 可以直接更改值

print(obj1)

obj1.index = names # 可以更改index

print(obj1)

obj1.name='income' # name屬性

obj1.index.name='names'

print(obj1)

print(obj[obj >2], obj1*2, sep='\n') # 值可以進行運算

print(obj2.isnull(), obj2.notnull(), sep='\n') # 檢視值是否為空

data = # 陣列或列表構成的字典

pop = ,'texas':} # 巢狀字典

frame = dataframe(data,index=i1,columns=['year','states','income','debt']) # 預設index為0,1,2,3,預設列會被自動排序,指定列不存在時值為nan

frame2 = dataframe(pop)

print(frame, frame2, frame.values, frame.columns, frame2.index, sep='\n')

print(frame['year'], frame[['year','states']], frame2.ohio, sep='\n') # 類似字典方式或者屬性方式檢視

frame.debt = np.arange(4) # 可直接賦值

print(frame)

frame.name = 'pop' # name屬性

frame.index.name = 'number'

frame.columns.name = 'state'

print(frame)

print(frame.loc[['one']], frame.iloc[[0,2,1]], sep='\n') # .loc根據標籤選取行,.iloc根據行號選行

print(frame2.reindex(index=[2002,2003,2004],columns=states,method='ffill')) # reindex可以對行列進行重排,沒有值得顯式nan,通過methon可以選定填充方式

print(frame2) # reindex建立出新的frame,原來的不改變

print(frame2[frame2['texas']>1.2], frame2.loc[2001:2003,'ohio'],sep='\n')

print(frame2.drop(2003)) # 刪除一行或多行,建立新物件,原來的不改變

from pandas import series, dataframe

import numpy as np

df1 = dataframe(np.arange(9).reshape((3,3)),columns=list('abc'))

df2 = dataframe(np.arange(20).reshape((4,5)),columns=list('abcde'))

s1 = series(np.arange(3),index=list('abc'))

print(df1+df2, df1.add(df2, fill_value=0), sep='\n') # dateframe之間進行運算時會自動補齊,nan代替無值,可以用fill_nan提前設定,series一樣

print(df1-s1, df1.sub(df1.a, axis=0), df1-df1.a, sep='\n')

# dateframe與series運算時,series的索引與dateframe列索引相互補齊之後運算,通過axis調整運算方向,

df3 = dataframe(np.random.randn(3,4),columns=list('dabc'),index=[2,0,1])

f = lambda x:x.max()-x.min()

def g(x):

return series([x.max(),x.min()],index=['max','min'])

print(df3.sort_index(), df3.sort_index(axis=1), df3.sort_index(ascending=false,by='b'),sep='\n') # 對行或列索引排序,by指定列

obj = series([7, -5, 7, 4, 2, 0, 4])

print(obj.rank(ascending=false, method='first'), df3.rank(axis=1, ascending=false, method='max'),sep='\n') # 用rank進行排位

df4 = dataframe(np.random.randn(4,4),index=list('abab'),columns=list('ccdd')) # index可以重複

print(df4, df4.c, df4.loc['a'], df4.index.is_unique, sep='\n') # 索引時得到所有對應值

df4.iloc[2,:]=np.nan

df4.iloc[0,3]=np.nan

print(df4, df4.sum(), df4.mean(axis=1), df4.mean(axis=1,skipna=false),sep='\n')

# 做統計運算時nan會被自動排除,除非整行或列都是nan,可以用skipna禁止跳過nan

# series1.corr(series2),series1.cov(series2) corr:相關係數 cov:協方差

# dataframe.corr(), dateframe.cov(), dateframe1.corrwith(dateframe2) 計算與自身的相關係數與協方差,corrwith計算與其他dateframe的相關係數

# 缺失資料處理

# dropna(axis=1,how='all') dropna()mor會濾除含有nan的行,通過,axis,how指定濾除全為nan的行或列

# fillna(value), fillna(), fillna(method='ffill',inplace=true)

# fillna填充nan,可以輸入值,字典,或者method,inplace不再建立新dateframe,而是直接在原dateframe上修改

df5 = dataframe(np.random.randn(4,3),

index=[list('aabb'),[1,2,1,2]],

columns=[['ohio','ohio','texas'],['green','green','red']]) # 在每個軸上可以有多層索引

df5.index.name=['key1','key2']

df5.columns.name=['state','color']

print(df5, df5.swaplevel(0,1), sep='\n')

print(df5.sum(level=0))

# swaplevel交換索引位置,sortlevel對某個索引進行排序,通過level指定對某個索引進行統計

# set_index(drop=false)可以指定某列為索引,drop引數可以保持原來的列

資料分析之pandas

pandas是基於numpy構建的庫,擁有兩種資料結構 series和dataframe series 就是一維陣列 dataframe 是二維陣列series in 1 from pandas import series,dataframe in 2 import pandas as pd in ...

python資料分析之pandas

matplotlib inline import pandas as pd import numpy as np import matplotlib.pyplot as plt 1.建立dataframe dates pd.date range 20200401 periods 6,freq 2d ...

資料分析之Pandas(一)

首先匯入相關模組 1 import pandas as pd 2from pandas import series,dataframe 3import numpy as np series是一種類似與一維陣列的物件,由下面兩個部分組成 values 一組資料 ndarray型別 index 相關的資...