最近小编认真整理了20+个基于python的实战案例,主要包含:数据分析、可视化、机器学习/深度学习、时序预测等,案例的主要特点:
- 提供源码:都是基于jupyter notebook,附带一定的注释,运行即可
- 数据齐全:大部分案例都有提供数据,部分案例使用内置数据集
数据统计分析
基于python和第三方库进行数据处理和分析,主要使用pandas、plotly、matplotlib等库,具体案例:
电子产品(手机)销售分析:
(1)不同内存下的销量(代码片段)
nei_cun = color_size["Number_GB"].value_counts().reset_index()
nei_cun.columns = ["Number_of_GB","Count"] # 重命名
nei_cun["Number_of_GB"] = nei_cun["Number_of_GB"].apply(lambda x: str(x) + "GB")
fig = px.pie(nei_cun,
values="Count",
names="Number_of_GB")
fig.show()
(2)不同闪存Ram下的价格分布(代码片段)
fig = px.box(df, y="Sale Price",color="Ram")
fig.update_layout(height=600, width=800, showlegend=False)
fig.update_layout(
title={ "text":'不同<b>闪存</b>下的价格分布',
"y":0.96,
"x":0.5,
"xanchor":"center",
"yanchor":"top"
},
xaxis_tickfont_size=12,
yaxis=dict(
title='Distribution',
titlefont_size=16,
tickfont_size=12,
),
legend=dict(
x=0,
y=1,
bgcolor='rgba(255, 255, 255, 0)',
bordercolor='rgba(2, 255, 255, 0)'
)
)
fig.show()
7万条餐饮数据分析
fig = px.bar(df2_top3,x="行政区",y="店铺数量",color="类别",text="店铺数量")
fig.update_layout(title="不同行政区下不同类别的店铺数量对比")
fig.show()
不同店铺下的点评数量对比:
4个指标的关系:口味、环境、服务和人均消费
基于python实现RFM模型(用户画像)
RFM模型是客户关系管理(CRM)中的一种重要分析模型,用于衡量客户价值和客户创利能力。该模型通过以下三个指标来评估客户的价值和发展潜力:
-
近期购买行为(R):指的是客户最近一次购买的时间间隔。这个指标可以反映客户的活跃程度和购买意向,进而判断客户的质量和潜在价值。
-
购买的总体频率(F):指的是客户在一定时间内购买商品的次数。这个指标可以反映客户对品牌的忠诚度和消费习惯,进而判断客户的潜力和价值。
-
花了多少钱(M):指的是客户在一定时间内购买商品的总金额。这个指标可以反映客户的消费能力和对品牌的认可度,进而判断客户的价值和潜力。
计算R、F、M三个指标值:
data['Recency'] = (datetime.now().date() - data['PurchaseDate'].dt.date).dt.days
frequency_data = data.groupby('CustomerID')['OrderID'].count().reset_index()
# 重命名
frequency_data.rename(columns={'OrderID': 'Frequency'}, inplace=True)
monetary_data = data.groupby('CustomerID')['TransactionAmount'].sum().reset_index()
monetary_data.rename(columns={'TransactionAmount': 'MonetaryValue'}, inplace=True)
可视化
可视化主要是讲解了matplotlib的3D图和统计相关图形的绘制和plotly_express的入门:
(1) matplotlib的3D图形绘制
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize=(8,6))
ax = fig.gca(projection='3d')
z = np.linspace(0, 20, 1000)
x = np.sin(z)
y = np.cos(z)
surf=ax.plot3D(x,y,z)
z = 15 * np.random.random(200)
x = np.sin(z) + 0.1 * np.random.randn(200)
y = np.cos(z) + 0.1 *