1、讀取數據
import pandas
JL_data=pandas.read_excel(io='路徑/數據源.xlsx')
data=pandas.DataFrame(JL_data)
2、編寫數據
1)行列
data=pd.DataFrame(
np.random.randint(low=0,high=6,size=(5,5)),
columns=['列1','列2'],
index=['行1','行2']
)
2)列
data=pd.DataFrame({'key1':list('aabba'),
'key2': ['one','two','one','two','one'],
'data1': np.random.randn(5),
'data2': np.random.randn(5)})
1、單列:data["lng"]
2、多列:
xl = data.iloc[:, 1:] # 選取DataFrame的所有行,並截取第二列至最末列。
df = data.iloc[1:] # 選取DataFrame的第二行至最末行,保留所有列,並將選取的數據表保存在一個新的變量中。
3、單個值:
data["lng"][0]==data.loc[0,"lng"]
基於已有的數據進行特征構建
1、計算:兩列之間的加減乘除
data['new']= 加+ 減- 乘* 除/ 余數% 商// 冪**
2、定義指標
1)某個關鍵詞作為指標
import re
j=0
for j in range(0,len(data['字段1'])):
data['new'][j] = str(re.findall(r'關鍵詞',data['字段1'][j])).replace('[','').replace("'",'')
j+=1
data['new']
2) 特定符號之後的內容作為指標
(?<=特殊符號).*$
3)某個段作為指標
data['new'] = ''
data.loc[data['字段1'] - data['字段2'] > 0, 'new'] = '類1'
data.loc[data['字段1'] - data['字段2'] <= 0, 'new'] = '類2'
data['new'].value_counts()
data['new']
靈活性高,可以隨意定制你的分析計算要求
脈絡清晰易於理解數據
操作性強,報表神器
1、pivot_table簡介
pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
pivot_table有四個最重要的參數index、values、columns、aggfunc,本文以這四個參數為中心講解pivot操作是如何進行。
1)Index:Index就是層次字段,就是excel透視表的行,可以多行,形成多個維度
pd.pivot_table(data,index=['字段1']) ,pd.pivot_table(data,index=['字段1','字段2'])
2)Columns類似Index可以設置列層次字段,它不是一個必要參數,作為一種分割數據的可選方式。
pd.pivot_table(df,index=['字段1'],columns=['字段2'])
3) Values:在index字段維度下統計的指標,只能為數值的字段
pd.pivot_table(data,index=['字段1','字段2']],values=['指標1','指標2','指標3'])
4)Aggfunc參數可以設置我們對數據聚合時進行的函數操作。
當我們未設置aggfunc時,它默認aggfunc='mean'計算均值:
pd.pivot_table(df,index=['字段1','字段2']],values=['指標1','指標2','指標3'],aggfunc=[np.sum,np.mean])
還有其他:min、sum、max、count、mean、median等
5)fill_value默認填充空值,可fill_value=0,margins=True\margins=1進行匯總
6)類型
aggfunc也可以使用dict類型,如果dict中的內容與values不匹配時,以dict中為准。
Pandas中把dataframe轉成array:df=df.values
2、groupby
1)聚合
data.groupby('字段'),data.groupby(['字段1'],['字段2'])
匯總值:data.groupby(['字段1'],['字段2'])['指標1'].transform('sum')
data=groupby(['字段1'],['字段2'])['指標1','指標2'].sum().sort_values(['字段1'],['字段2']],ascending=False).reset_index()
2)分組,通過字典分組
mapping = {'字段1':'類1','字段2':'類1','字段3':'類2'}
data = people.groupby(mapping,axis=1).mean()
將處理結果保存到excel中
data.to_excel(r'路徑/數據結構.xlsx')