匯入模塊
import numpy as np
import pandas as pd
一.transform 聚合函式
在pandas 或者numpy 中沒有現成的函式可以使用,可以通過transform
data=pd.read_excel(r'地址')
# 寫法一:
data2=data['counts'].transform(lambda x:x*2)
# 寫法二:
def transforml(value):
values=value*2
return values
data2=data['counts'].transform(transforml)
二.分組
groupby(by='columns')
三.透視表
'''
# pd.pivot_table(資料表,index索引,一系列引數)
引數:
index: 行分組鍵,分完組以后,分組鍵的取值在行索引的位置
aggfunc: 聚合函式==>和agg方法一致
values:指定想要進行分組的列
columns:指定想要進行分組的行
fill_value:將資料為nan的值填充為對應的值
margins:表示匯總開關,默認是false,當margins為True時,添加匯總的行與列
margins_name:'All' 匯總的列或者行columns,index的索引
data3=pd.pivot_table(data,index=['order_id','amounts'],aggfunc=[np.mean,np.sum],values=['counts','add_inprice']).head()
data4=pd.pivot_table(data,columns=['order_id'],aggfunc=[np.mean],values=['counts','add_inprice']).head()
# print(data3)
# 透視表查找資料
pd.pivot_table(data,
columns='order_id',
index='dishes_name',
values='counts',
aggfunc=np.sum,
fill_value='ss'
)
'''
四.交叉表
data5=pd.crosstab(
index=data['order_id'],
columns=data['dishes_name'],
values=data['counts'],
aggfunc=np.sum
)
# print(data5)
五.表格合并方法
(1)concat資料合并
# pd.concat((表一,表二,表三),axis=0) -----縱向拼接,
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
# print(left)
# print(right)
data6=pd.concat((left,right),
axis=0,
join='outer' # outer外連接-求并集, inner內連接-求交集
# verify_integrity= False # 檢查索引是否有重復項,沒有不報錯,有重復項會報錯
)
# print(data6)
(2)表合并,解決行索引沒有意義的情況下,資料不匹配問題(解決concat中橫向拼接問題)
# merge 主鍵合并方法,
# on=主鍵--必須是兩張表共有的引數才能作為主鍵, 主鍵可以傳兩個引數
# how=inner取交集,outer取并集,沒有用Nan補齊
# 左連接-左表作為主表,最終表包含左表的所有資料,只取右表中含左表的部分
# pd.merge(left,right,on=['name','telephone'],how='right')
'''當兩個表中的主鍵不一樣時,left_on=,right_on=,一一對應 '''
# 補充: 更改表格名稱的方法
left2=left.rename(columns={'key1':'key222','key2':'dsjjdj'},
inplace=False # 是否對原表進行修改,默認False
)
# print(left2)
六.重疊合并
df1作為主表,用df2填充df1,當df2與df1不一致時默認主表資料
dict1 = {'ID':[1,2,3,4,5,6,7,8,9],
'System':['W10','w10',np.nan,'w10',np.nan,np.nan,'w7','w7','w8']}
dict2 = {'ID':[1,2,3,4,5,6,7,8,9],
'System':[np.nan,np.nan,'w7','w7','w7','w7','w8',np.nan,np.nan]}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
df3=df1.combine_first(df2)
print(df1,df2,df3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245222.html
標籤:python
上一篇:資料分析第九天
下一篇:堆疊和佇列精華決議
