程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python數據處理 同一用戶歷史消費金額按照時間順序,橫向排列

編輯:Python

目的

        已經獲取到用戶每次的下單商品金額,使用Python處理數據得到用戶的歷史購買記錄出現在同一行,列名顯示為(旺旺號、商品金額第1次、商品金額第二次、……)。

如圖所示

具體操作步驟:

  1. 首先將數據讀取進python
  2. 其次,按照旺旺號、訂單號、金額進行分組,對付款時間排序
  3. 使用pivot_table()構建透視表,對列名重命名,並重置索引

具體實現方法:

1、將數據讀取進python

data = pd.read_excel('新建 XLSX 工作表.xlsx',sheet_name= 'Sheet1') #讀取數據進入Python程序
print(data.head())

 2、按照旺旺號、訂單號、金額進行分組,對付款時間排序

#首先對數據進行聚合處理,使得每個旺旺號+訂單號+付款時間唯一
data1 = pd.pivot_table(data,values =['商品金額'],index =['旺旺號','訂單號','付款時間'],
aggfunc = {'商品金額':sum}).reset_index(drop = False)
# print(data1.head())
# 先將時間字段,由字符串格式轉為時間格式
data1['付款時間'] =data1['付款時間'].apply(lambda x:datetime.datetime.strptime(x,'%Y-%m-%d %H:%M:%S'))
# print(data1.head())
# 根據不同的旺旺號、訂單號、金額,對付款時間進行排序
data1['ranks'] = data1.groupby(['旺旺號'])['付款時間'].rank().astype(int)
print(data1)

 3、使用pivot_table()構建透視表,對列名重命名,並重置索引

data2 = pd.pivot_table(data1,values=['商品金額'],index = ['旺旺號'],columns =['ranks'])
# print(data2.head())
"""這個透視表兩層列名,第一層是金額,第二層是序列"""
data2.columns.tolist() # 查看列名
data2.columns = [str(s1) +"第"+str(s2)+"次" for (s1,s2) in data2.columns.tolist()] #對列名進行重命名
data2.reset_index(inplace =True) #重置索引,然後拉平索引

此時實現了最初的界面效果。

進一步計算增長率

        然後我們可以利用這個數據,進一步的處理,計算消費金額的增長率,比如:第二次的變化:(第二次的消費金額/第一的消費金額 - 1);第三次的變化:(第三次的消費金額/第二的消費金額 - 1),……以此類推。

'''接下來使用循環計算增長率'''
for i in range(2,39):
data2['第%s次變化' %(i)] = (data2['商品金額第%s次' % (str(i))] )/(data2['商品金額第%s次' % (str(i-1))] ) -1
print(data2.head())

結果如圖所示:

 這樣,我們就現實了,同一用戶歷史消費金額按照時間順序,橫向排列的數據需求啦~~~~


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved