Ⅰ python中count函數怎麼用
統計列表中字元的出現頻率
inp_lst = ['Apple','Banana','Apple','Grapes','Jackfruit','Apple']
lst_cnt = inp_lst.count('Apple')
print(lst_cnt)
Ⅱ 利用python進行《野蠻時代》游戲數據分析
數據包含近229萬條記錄,109個欄位,以下取較重要的欄位進行說明。
欄位說明:user_id:用戶編碼,用戶唯一標識
bd_stronghold_level:要塞等級,相當於游戲賬號等級
wood_rece_value:木頭消耗數量
stone_rece_value:石頭消耗數量
ivory_rece_value:象牙消耗數量
meat_rece_value:肉消耗數量
magic_rece_value:魔法消耗數量
general_acceleration_rece_value:通用加速消耗數量
building_acceleration_rece_value:建築加速消耗數量
reaserch_acceleration_rece_value:科研加速消耗數量
training_acceleration_rece_value:訓練加速消耗數量
treatment_acceleration_rece_value:治療加速消耗數量
pvp_battle_count:玩家對玩家次數
pve_battle_count:玩家對機器次數
avg_online_minutes:日均在線時間
pay_price: 消費金額
pay_count:消費次數
分析思路:用戶注冊時間分布情況?
用戶的付費情況(付費率,ARPU,ARPPU)?
各等級用戶的付費情況?
用戶的消費習慣?
可視化數據
分析過程:
①導入數據
import numpy as np
import pandas as pd
from pandas import read_csv
from sklearn.cluster import KMeans
import matplotlib.pyplotas plt
import pylab as pl
from matplotlib.font_managerimport FontManager, FontProperties
pd.set_option('display.max_columns',None)
#為了數據安全,一份數據
df=df0
#檢查是否有空值
print(df.isnull().any().any())
#觀察數據構成
print(df.head())
②清洗數據
#以user_id為維度,刪除重復數據,並查看用戶總數
df=df.drop_plicates(subset='user_id')
print('用戶總數:',len(df['user_id']))
→用戶總數:2288007
③計算用戶注冊時間分布
#首先將注冊時間精確到天
register_date=[]
for i in df['register_time']:
date=i[5:10]
register_date.append(date)
df['register_time']=register_date
#計算每天的注冊人數
df_register=df.groupby('register_time').size()
df_register.columns=['日期','注冊人數']
print(df_register)
(可視化)
plt.plot(df_register)
plt.grid(True)
pl.xticks(rotation=90)
font=FontProperties(fname='/System/Library/Fonts/PingFang.ttc')
plt.title('用戶注冊分布圖',fontproperties=font)
plt.show()
△可以看出,用戶注冊數在2月19日有一次的大的高峰,其他時間也分別有幾次小高峰,且高峰的持續時間很短,可以推測是因為游戲推出一些獎勵活動或公司對游戲的推廣取得了效果進而使注冊用戶激增。
④用戶的付費情況(付費率,ARPU,ARPPU)
#付費率(付費人數/活躍人數)
df_pay_user=df[(df['pay_price']>0)]
pay_rate=df_pay_user['user_id'].count()/df_active_user['user_id'].count()
print('付費率:%.2f'%(pay_rate))
#ARPU(總付費金額/活躍人數)
arpu=df_pay_user['pay_price'].sum()/df_active_user['user_id'].count()
print('ARPU:%.2f'%(arpu))
#ARPPU(總付費金額/付費人數)
arppu=df_pay_user['pay_price'].sum()/df_pay_user['user_id'].count()
print('ARPPU:%.2f'%(arppu))
△目前盈利較好的手游的ARPU超過5元,一般手游在3~5元之間,盈利較差的低於3元,該游戲的ARPU為8.55元,說明盈利水平較高。
⑤不同等級用戶的付費情況
df_user=df[['user_id','bd_stronghold_level','pay_price','pay_count']]
df_table=pd.pivot_table(df_user,index=['bd_stronghold_level'],
values=['user_id','pay_price','pay_count'],
aggfunc={'user_id':'count','pay_price':'sum','pay_count':'sum'})
df_stronghold_pay=pd.DataFrame(df_table.to_records())
#各等級付費人數
df_stronghold_pay['pay_num']=df_user[(df_user['pay_price']>0)].groupby('bd_stronghold_level').user_id.count()
#各等級付費轉化率
df_stronghold_pay['pay_rate']=df_stronghold_pay['pay_num']/df_stronghold_pay['user_id']
#各等級平均付費金額
df_stronghold_pay['avg_pay_price']=df_stronghold_pay['pay_price']/df_stronghold_pay['user_id']
#各等級平均付費次數
df_stronghold_pay['avg_pay_count']=df_stronghold_pay['pay_count']/df_stronghold_pay['user_id']
#重命名列名
df_stronghold_pay.columns=['要塞等級','總付費次數','總付費金額','總人數',
'付費人數','付費轉化率','人均付費金額','人均付費次數']
df_stronghold_pay=df_stronghold_pay[['要塞等級','總人數','付費人數','付費轉化率',
'總付費金額','人均付費金額','總付費次數','人均付費次數']]
df_stronghold_pay=df_stronghold_pay.round(2)
print(df_stronghold_pay)
(可視化)
#要塞等級—付費轉化率
x=df_stronghold_pay['要塞等級']
y=df_stronghold_pay['付費轉化率']
plt.xticks(x,range(0,len(x),1))
plt.plot(x,y)
plt.grid(True)
plt.title('不同等級用戶付費轉化率',fontproperties=font)
plt.show()
#要塞等級-人均付費金額
x=df_stronghold_pay['要塞等級']
y=df_stronghold_pay['人均付費金額']
plt.xticks(x,range(0,len(x),1))
plt.plot(x,y)
plt.grid(True)
plt.title('不同等級用戶人均付費jine',fontproperties=font)
plt.show()
x=df_stronghold_pay['要塞等級']
y=df_stronghold_pay['人均付費金額']
plt.xticks(x,range(0,len(x),1))
plt.plot(x,y)
plt.grid(True)
plt.title('不同等級用戶人均付費jine',fontproperties=font)
plt.show()
#要塞等級-人均付費次數
x=df_stronghold_pay['要塞等級']
y=df_stronghold_pay['人均付費次數']
plt.xticks(x,range(0,len(x),1))
plt.plot(x,y)
plt.grid(True)
plt.title('不同等級用戶人均付費次數',fontproperties=font)
plt.show()
△用戶等級到達10級時,付費率接近60%,等級到達13級時,付費率接近100%,且人均付費金額和次數兩項指標也在用戶達到10級後增長迅速,因此可以認定10級以上用戶為游戲的核心用戶。
△但是觀察用戶等級分布,發現絕大部分用戶還是處在10級以下的水平,因此如何使用戶達到10級是游戲運營接下來需要考慮的事。
⑥不同玩家的消費習慣
該游戲充值主要可以獲得道具類(木頭、石頭、象牙、肉、魔法)和加速券類(通用、建築、科研、訓練、醫療)。根據用戶的充值金額大小,分別分析兩類消費品的消耗情況。
#將等級>=10級的玩家劃分為:消費>=500為高消費玩家,<500為普通玩家
df_eli_user=df[(df['pay_price']>=500)&(df['bd_stronghold_level']>=10)]
df_nor_user=df[(df['pay_price']<500)&(df['bd_stronghold_level']>10)]
#不同玩家的道具消耗情況
wood_avg=[df_eli_user['wood_rece_value'].mean(),df_nor_user['wood_rece_value'].mean()]
stone_avg=[df_eli_user['stone_rece_value'].mean(),df_nor_user['stone_rece_value'].mean()]
ivory_avg=[df_eli_user['ivory_rece_value'].mean(),df_nor_user['ivory_rece_value'].mean()]
meat_avg=[df_eli_user['meat_rece_value'].mean(),df_nor_user['meat_rece_value'].mean()]
magic_avg=[df_eli_user['magic_rece_value'].mean(),df_nor_user['magic_rece_value'].mean()]
props_data={'high_value_player':[wood_avg[0],stone_avg[0],ivory_avg[0],meat_avg[0],magic_avg[0]],
'normal_player':[wood_avg[1],stone_avg[1],ivory_avg[1],meat_avg[1],magic_avg[1]]}
df_props=pd.DataFrame(props_data,index=['wood','stone','ivory','meat','magic'])
df_props=df_props.round(2)
print(df_props)
#可視化
ax=df_props.plot(kind='bar',title='Props Rece',
grid=True,legend=True)
plt.show()
△普通玩家和高消費玩家對木頭、石頭、肉的消耗都較大,魔法的消耗都較小,而在象牙的消耗上,高消費玩家和普通玩家的消耗差距較大。
#不同玩家的加速券消耗情況
general_avg=[df_eli_user['general_acceleration_rece_value'].mean(),
df_nor_user['general_acceleration_rece_value'].mean()]
building_avg=[df_eli_user['building_acceleration_rece_value'].mean(),
df_nor_user['building_acceleration_rece_value'].mean()]
research_avg=[df_eli_user['reaserch_acceleration_rece_value'].mean(),
df_nor_user['reaserch_acceleration_rece_value'].mean()]
training_avg=[df_eli_user['training_acceleration_rece_value'].mean(),
df_nor_user['training_acceleration_rece_value'].mean()]
treatment_avg=[df_eli_user['treatment_acceleration_rece_value'].mean(),
df_nor_user['treatment_acceleration_rece_value'].mean()]
acceleration_data={'high_value_player':[general_avg[0],building_avg[0],research_avg[0],
training_avg[0],treatment_avg[0]],
'normal_player':[general_avg[1],building_avg[1],research_avg[1],
training_avg[1],treatment_avg[1]]}
df_acceleration=pd.DataFrame(acceleration_data,index=['general','building','researching','training','treatment'])
print(df_acceleration.round(2))
#可視化
ax=df_acceleration.plot(kind='bar',title='Acceleration Rece',
grid=True,legend=True)
plt.show()
△兩類玩家對對治療加速券消耗都很小,對通用加速券的消耗差異較大,其他三種加速券消耗差別不大。
結論:1.該游戲具有較大的用戶基數,且新用戶注冊受游戲活動、新版本等因素影響較大。
2.該游戲的ARPU為8.55,說明該游戲的盈利能力較高。
3.用戶等級達到10級後,付費意願明顯上升,且達到13級時付費率將近100%。但是絕大多數用戶仍然停留在10級以下,如何使用戶平滑升至10級尤為重要。
4.消費習慣上,高消費玩家對象牙和通用加速券的需求遠多於一般玩家。
Ⅲ python數據分析項目:用戶消費行為分析
為了創造更多利潤、實現數據驅動運營,某CD網站擬對18個月以來的近7萬條消費數據進行分析。具體的研究思路如下:
新增['month']列,便於後續按月分析。
重新查看,此時的時間列已轉換為正常格式。
由上圖可知,
接下來我們用之前清洗好的欄位進行數據分析。
前三個月消費訂單數在10000筆左右,後續月份的平均則在2500筆。
前三個月產品購買數在20000以上,後續月份的產品購買量在6000~8000左右 。
前三個月每月的消費人數在8000-10000之間,後續月份平均消費人數在2000人不到
上述消費趨勢的分析可以通過數據透視表分析(不建議數據透視表進行去重操作)
本章小結——
趨勢分析:總體來看,消費總金額、消費次數、產品購買量、消費人數的趨勢想似:均先上升、下跌、趨於平穩並下降。
可以看出網站的流失用戶在增加,採用開源(拉新)節流(留存)的運營方式,來增加銷售收入。
上一部分是按月分析,主要看趨勢;本部分按用戶個體分析,來看消費能力。
按用戶消費金額進行降序排列,由圖可知,共計約25000個用戶:
啟發,只要維護好這5000個用戶(佔比20%)就可以把業績KPI完成70%,如果能把5000個用戶運營的更好就可以佔比更高。
通過以上基本數據描述分析可以清楚該網站整體的消費趨勢和用戶消費能力,現在進一步挖掘用戶消費行為數據,通過RFM模型、生命周期等方法對用戶進行分層,為後續運營管理提供依據。
首購可以進一步依渠道劃分,衡量不同渠道的差異性,從而量化渠道能力,為後期渠道優化提供依據。
用戶第一次購買分布,集中在前三個月(1997年1-3月);其中,在2月11日至2月25日有一次劇烈波動
由圖可知,1997年1-4月新用戶數量由90%跌落至80%以下;之後幾個月的新用戶量保持在80~82%區間。
RFM是一個經典的用戶分類模型,模型利用通用交易環節中最核心的三個維度——最近消費(Recency)、消費頻率(Frequency)、消費金額(Monetary)細分用戶群體,從而分析不同群體的用戶價值,最終達到精準營銷。
RFM從3個維度、分2個等級(均值)得到8類用戶分層。
通過RFM模型,把用戶分為8個類別,分別給用戶打標簽、將客戶分為重要價值、重要保持、重要挽留、重要發展、一般價值、一般保持、一般保留、一般發展8類客戶。
從RFM分層可知,本網站的大部分用戶為一般挽留客戶(可適當放棄這部分低價值客戶、也可進一步提高活躍度)、重要保持客戶(企業優質的客戶群,採用會員制運營)。具體運營策略依據參照如下:
為了避免劃分用戶群體過多(RFM從3個維度、分2個等級得到8類用戶分層的數據立方),可能導致針對性的營銷成本負擔上升;下面將通過聚類方法,基於RFM模型劃分成4類用戶,更快實現後期用戶管理。
顯然,歸一化預處理後,當n=2時,輪廓系數取最大值0.79,僅從模型聚類效果來講分2類合適;而標准正態化預處理後顯示,分4類的輪廓系數最大,達0.6964(但2-7類的輪廓系數整理差別波動不大)
參考漏斗模型,針對每個用戶,按18個月內的每個月對用戶情況進行分類,即新用戶、活躍用戶、迴流用戶、流失用戶。
通過下面的數據透視表即可得到每個用戶每個月的購買情況,從而進行轉化分析。
若本月無消費(即為0)
若本月有消費(即為1)
由上表可知,每月的用戶消費狀態變化
Ⅳ python中如何用字典統計次數
在python語言中,字典和列表都是其中的數據類型,如果想要使用字典統計列表中元素出現次數,該如何實現?
1/6
打開pycharm工具,新建python文件,打開文件並定義列表k,進行賦值
2/6
接著定義一個空字典j,作為裝載列表中的元素和對應的次數
3/6
使用for...in語句遍歷列表k,如果列表k中的元素出現一次,對應的次數加1,否則只展示一次
4/6
使用循環語句遍歷字典j,並依次列印字典中的key和value
5/6
保存代碼並運行python文件,查看控制台列印結果
6/6
再次修改列表中的元素,添加元素,然後再次運行查看列印結果
注意事項
注意python語言中的列表和字典的區別
注意如何使用字典實現查找列表元素出現的次數
Ⅳ python怎麼統計個數
python怎麼統計個數:
1、打開一個python文件。
2、然後定義一個序列numbers3。
3、想要統計numbers3序列中4這個元素出現的次數,可以使用count方法來實現,可以這樣寫:numbers3.count(4)
4、用print函數將統計的結果列印出來。
5、右鍵單擊,彈出肆滾菜單,點擊runcode運行程序純帶。
6、得出結果為做雹蘆2,表示4個元素在numbers3這個列表中有2個。
Ⅵ Python數據分析案例-葯店銷售數據分析
最近學習了Python數據分析的一些基礎知識,就找了一個葯品數據分析的小項目來練一下手。
數據分析的目的:
本篇文章中,假設以朝陽醫院2018年銷售數據為例,目的是了解朝陽醫院在2018年裡的銷售情況,通過對朝陽區醫院的葯品銷售數據的分析,了解朝陽醫院的患者的月均消費次數,月均消費金額、客單價以及消費趨勢、需求量前幾位的葯品等。
數據分析基本過程包括:獲取數據、數據清洗、構建模型、數據可視化以及消費趨勢分析。
數據准備
數據是存在Excel中的,可以使用pandas的Excel文件讀取函數將數據讀取到內存中,這里需要注意的是文件名和Excel中的sheet頁的名字。讀取完數據後可以對數據進行預覽和查看一些基本信息。
獲取數據:朝陽醫院2018年銷售數據.xlsx(非真實數據) 提取碼: 6xm2
導入原始數據
數據准備
數據是存在Excel中的,可以使用pandas的Excel文件讀取函數將數據讀取到內存中,這里需要注意的是文件名和Excel中的sheet頁的名字。讀取完數據後可以對數據進行預覽和查看一些基本信息。
獲取數據:朝陽醫院2018年銷售數據.xlsx(非真實數據) 提取碼: 6xm2
導入原始數據
數據清洗
數據清洗過程包括:選擇子集、列名重命名、缺失數據處理、數據類型轉換、數據排序及異常值處理
(1)選擇子集
在我們獲取到的數據中,可能數據量非常龐大,並不是每一列都有價值都需要分析,這時候就需要從整個數據中選取合適的子集進行分析,這樣能從數據中獲取最大價值。在本次案例中不需要選取子集,暫時可以忽略這一步。
(2)列重命名
在數據分析過程中,有些列名和數據容易混淆或產生歧義,不利於數據分析,這時候需要把列名換成容易理解的名稱,可以採用rename函數實現:
(3)缺失值處理
獲取的數據中很有可能存在缺失值,通過查看基本信息可以推測「購葯時間」和「社保卡號」這兩列存在缺失值,如果不處理這些缺失值會干擾後面的數據分析結果。
缺失數據常用的處理方式為刪除含有缺失數據的記錄或者利用演算法去補全缺失數據。
在本次案例中為求方便,直接使用dropna函數刪除缺失數據,具體如下:
(4)數據類型轉換
在導入數據時為了防止導入不進來,會強制所有數據都是object類型,但實際數據分析過程中「銷售數量」,「應收金額」,「實收金額」,這些列需要浮點型(float)數據,「銷售時間」需要改成時間格式,因此需要對數據類型進行轉換。
可以使用astype()函數轉為浮點型數據:
在「銷售時間」這一列數據中存在星期這樣的數據,但在數據分析過程中不需要用到,因此要把銷售時間列中日期和星期使用split函數進行分割,分割後的時間,返回的是Series數據類型:
此時時間是沒有按順序排列的,所以還是需要排序一下,排序之後索引會被打亂,所以也需要重置一下索引。
其中by:表示按哪一列進行排序,ascending=True表示升序排列,ascending=False表示降序排列
先查看數據的描述統計信息
通過描述統計信息可以看到,「銷售數量」、「應收金額」、「實收金額」這三列數據的最小值出現了負數,這明顯不符合常理,數據中存在異常值的干擾,因此要對數據進一步處理,以排除異常值的影響:
數據清洗完成後,需要利用數據構建模型(就是計算相應的業務指標),並用可視化的方式呈現結果。
月均消費次數 = 總消費次數 / 月份數(同一天內,同一個人所有消費算作一次消費)
月均消費金額 = 總消費金額 / 月份數
客單價 = 總消費金額 / 總消費次數
從結果可以看出,每天消費總額差異較大,除了個別天出現比較大筆的消費,大部分人消費情況維持在1000-2000元以內。
接下來,我銷售時間先聚合再按月分組進行分析:
結果顯示,7月消費金額最少,這是因為7月份的數據不完整,所以不具參考價值。
1月、4月、5月和6月的月消費金額差異不大.
2月和3月的消費金額迅速降低,這可能是2月和3月處於春節期間,大部分人都回家過年的原因。
d. 分析葯品銷售情況
對「商品名稱」和「銷售數量」這兩列數據進行聚合為Series形式,方便後面統計,並按降序排序:
截取銷售數量最多的前十種葯品,並用條形圖展示結果:
結論:對於銷售量排在前幾位的葯品,醫院應該時刻關注,保證葯品不會短缺而影響患者。得到銷售數量最多的前十種葯品的信息,這些信息也會有助於加強醫院對葯房的管理。
每天的消費金額分布情況:一橫軸為時間,縱軸為實收金額畫散點圖。
結論: 從散點圖可以看出,每天消費金額在500以下的占絕大多數,個別天存在消費金額很大的情況。
</article>