padans 關於資料處理的雜談 時序數

2022-06-19 15:15:13 字數 3188 閱讀 6159

情況:業務資料基本欄位會有如下:

index(['時間', '地區', '產品', '字段', '數值'], dtype='object')

這樣就會引發乙個經典「三角不可能定理」,如何同時簡約展現分時序、分產品、分欄位資料。)一般來說,

1、時序為作為單獨的分類,

2、然後剩下兩個標籤就是,要麼:

2.1、每個字段一張表,然後列為時序,行為產品

2.2、要麼每個產品一張表,列為時序,行為產品。

2.3、要麼將「產品」、「字段」組成新的列。

那麼實現2.1、2.2,不過這樣的瓶頸就是,如果有很多個字段,則會組合成很多張表。

#

使用資料透視表,假設現在,逐字段,分產品時序

#獲取所有產品,去重

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)

實現2.3

#

通過將 產品 字段 組合為乙個,形成二維表

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 是一種計算機程式設計正規化,其允許給定乙個資料序列 流處理資料來源 一系列資料操作 函式 被應用到流中的每個元素。同時流處理工具可以顯著提高程式設計師的開發效率,允許他們編寫有效 乾淨和簡潔的 流資料處理在我們的日常工作中非常常見,舉個例子,我們在業務開發...