情況:業務資料基本欄位會有如下:
index(['時間', '地區', '產品', '字段', '數值'], dtype='object')

這樣就會引發乙個經典「三角不可能定理」,如何同時簡約展現分時序、分產品、分欄位資料。)一般來說,
1、時序為作為單獨的分類,
2、然後剩下兩個標籤就是,要麼:
2.1、每個字段一張表,然後列為時序,行為產品
2.2、要麼每個產品一張表,列為時序,行為產品。
2.3、要麼將「產品」、「字段」組成新的列。
那麼實現2.1、2.2,不過這樣的瓶頸就是,如果有很多個字段,則會組合成很多張表。
#實現2.3使用資料透視表,假設現在,逐字段,分產品時序
#獲取所有產品,去重
cp = df['
產品'].to_frame().drop_duplicates(subset=['產品'
])#得到 3個 工作表,每個工作表為相關欄位的分產品分時序,這樣一來,如果涉及很多個字段,則會有很多個表
with pd.excelwriter('
data/test2-shuchu.xls
') as writer:
for zd in df['字段'
].unique():
table = pd.pivot_table(df[df['
字段'] == zd], values='
數值', index=['
產品'],columns=['
時間'], aggfunc=np.sum)
table = pd.merge(cp,table,how='
left
',on='產品'
) table.to_excel(writer,index=false,sheet_name = zd)
#輸出一張工作表即可。通過將 產品 字段 組合為乙個,形成二維表
with pd.excelwriter('
data/test2-shuchu2.xls
') as writer:
table = pd.pivot_table(df, values='
數值', index=['
產品','
字段'],columns=['
時間'], aggfunc=np.sum)
table.reset_index().to_excel(writer,index=false,sheet_name = zd)
有時還需要處理成,具有環比、比年初、同比等值。則採取給源資料增加字段。
先通過類似方法給源資料增加乙個比去年同期列
def輸出如下:add_year_on_year(x):
d = ''
if x['
時間'] == '
20161231':
return
none
elif x['
時間'] == '
20171231':
d = '
20161231
'elif x['
時間'] == '
20181231':
d = '
20171231'#
獲取相應的數值
v = df[(df['
時間'] == d) & (df['
地區'] == x['
地區']) & (df['
產品'] == x['
產品']) & (df['
字段'] == x['字段'
])]
#print('d:',d)
if len(v) ==0:
return x['數值'
]
else
:
return x['
數值'] - v.iloc[0]['數值'
]df[
'同比增減
with pd.excelwriter(
'data/test2-huanyuan-add.xls
') as writer:
df.to_excel(writer,index=false,sheet_name = '
sheet1
')
最後在再把資料打回stack,再執行資料透視表操作
df2 = df.set_index(['最終輸出:時間', '
地區', '
產品','字段'
])df2 =df2.stack()
df2 =df2.reset_index()
with pd.excelwriter(
'data/test2-huanyuan2.xls
') as writer:
df2.to_excel(writer,index=false,sheet_name = '
sheet1')
df2.rename(columns=,inplace=true)
#通過將 產品 字段 組合為乙個,形成二維表
with pd.excelwriter('
data/test2-shuchu3.xls
') as writer:
table = pd.pivot_table(df2, values='
數值', index=['
產品','
字段','
數值屬性
'],columns=['
時間'], aggfunc=np.sum)
table.reset_index().to_excel(writer,index=false,sheet_name = '
h')
關於資料處理
1.使用者提供了乙份學生異動資料。分析 a.在系統裡面學生所對應的班級,專業,學院這些基礎資料都是存在的,我只需要把學生的班級在資料庫裡面弄準確即可。b.處理這些資料那我要知道我應該處理那幾張表 這個需要基於對系統的資料結構有所了解 那麼我處理資料需要牽涉到四張表 學院部門資訊表 bmdmb 學生資...
建模雜談系列7 資料處理標準流程
資料處理尚未有統一的標準流程,這裡只是提出一種實現可能。無論是資料分析或者建模,首先是要累積一定的資料,不然沒有統計性。所以自然而然地,分析模式下我們習慣了進行批處理。而在開始應用的時候通常是單條過來的,並且要經過一系列變換才能使用。從原始資料 表資料 開始,處理流程如下 進行元資料分析,生成基礎資...
資料處理 流資料處理利器
流處理 stream processing 是一種計算機程式設計正規化,其允許給定乙個資料序列 流處理資料來源 一系列資料操作 函式 被應用到流中的每個元素。同時流處理工具可以顯著提高程式設計師的開發效率,允許他們編寫有效 乾淨和簡潔的 流資料處理在我們的日常工作中非常常見,舉個例子,我們在業務開發...