Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >精心整理20+Python实战案例(附源码、数据)

精心整理20+Python实战案例(附源码、数据)

作者头像
周萝卜
发布于 2023-08-21 07:09:28
发布于 2023-08-21 07:09:28
36600
代码可运行
举报
文章被收录于专栏:萝卜大杂烩萝卜大杂烩
运行总次数:0
代码可运行

大家好

最近小编认真整理了20+个基于python的实战案例,主要包含:数据分析、可视化、机器学习/深度学习时序预测等,案例的主要特点:

  • 提供源码:代码都是基于jupyter notebook,附带一定的注释,运行即可
  • 数据齐全:大部分案例都有提供数据,部分案例使用内置数据集

数据统计分析

基于python和第三方库进行数据处理和分析,主要使用pandas、plotly、matplotlib等库,具体案例:

电子产品(手机)销售分析:

(1)不同内存下的销量(代码片段)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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下的价格分布(代码片段)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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万条餐饮数据分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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三个指标值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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图形绘制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 * np.random.randn(200)
ax.scatter3D(x, y, z, c=z, cmap='Greens')

plt.show()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.style.use('fivethirtyeight')
fig = plt.figure(figsize=(14,8))

ax = plt.axes(projection='3d')
ax.plot_surface(x, 
                y,
                z, 
                rstride=1,
                cstride=1, 
                cmap='viridis',
                edgecolor='none')

ax.set_title('surface')

# ax.set(xticklabels=[],  # 隐藏刻度
#        yticklabels=[],
#        zticklabels=[])

plt.show()

(2) 统计图形绘制

绘制箱型图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.random.seed(10)
D = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3))

fig, ax = plt.subplots(2, 2, figsize=(9,6), constrained_layout=True)

ax[0,0].boxplot(D, positions=[1, 2, 3])
ax[0,0].set_title('positions=[1, 2, 3]')

ax[0,1].boxplot(D, positions=[1, 2, 3], notch=True)  # 凹槽显示
ax[0,1].set_title('notch=True')

ax[1,0].boxplot(D, positions=[1, 2, 3], sym='+')  # 设置标记符号
ax[1,0].set_title("sym='+'")

ax[1,1].boxplot(D, positions=[1, 2, 3], 
                patch_artist=True,
                showmeans=False, 
                showfliers=False,
                medianprops={"color": "white", "linewidth": 0.5},
                boxprops={"facecolor": "C0", "edgecolor": "white", "linewidth": 0.5},
                whiskerprops={"color": "C0", "linewidth": 1.5},
                capprops={"color": "C0", "linewidth": 1.5})
ax[1,1].set_title("patch_artist=True")

# 设置每个子图的x-y轴的刻度范围
for i in np.arange(2):
    for j in np.arange(2):
        ax[i,j].set(xlim=(0, 4), xticks=[1,2,3],
                    ylim=(0, 8), yticks=np.arange(0, 9))

plt.show()

绘制栅格图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.random.seed(1)
x = [2, 4, 6]
D = np.random.gamma(4, size=(3, 50))

# plt.style.use('fivethirtyeight')

fig, ax = plt.subplots(2, 2, figsize=(9,6), constrained_layout=True)

# 默认栅格图-水平方向
ax[0,0].eventplot(D)
ax[0,0].set_title('default')

# 垂直方向
ax[0,1].eventplot(D, 
                  orientation='vertical', 
                  lineoffsets=[1,2,3])
ax[0,1].set_title("orientation='vertical', lineoffsets=[1,2,3]")

ax[1,0].eventplot(D, 
                  orientation='vertical',
                  lineoffsets=[1,2,3],
                  linelengths=0.5) # 线条长度
ax[1,0].set_title('linelengths=0.5')

ax[1,1].eventplot(D, 
                  orientation='vertical',
                  lineoffsets=[1,2,3],
                  linelengths=0.5,
                 colors='orange')
ax[1,1].set_title("colors='orange'")


plt.show()

(3) plotly_express入门 使用plotly_express如何快速绘制散点图、散点矩阵图、气泡图、箱型图、小提琴图、经验累积分布图、旭日图等

机器学习

基于机器学习的Titanic生存预测

目标变量分析:

相关性分析:

基于树模型的特征重要性排序代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
f,ax=plt.subplots(2,2,figsize=(15,12))

# 1、模型
rf=RandomForestClassifier(n_estimators=500,random_state=0)
# 2、训练
rf.fit(X,Y)
# 3、重要性排序
pd.Series(rf.feature_importances_, X.columns).sort_values(ascending=True).plot.barh(width=0.8,ax=ax[0,0])
# 4、添加标题
ax[0,0].set_title('Feature Importance in Random Forests')

ada=AdaBoostClassifier(n_estimators=200,learning_rate=0.05,random_state=0)
ada.fit(X,Y)
pd.Series(ada.feature_importances_, X.columns).sort_values(ascending=True).plot.barh(width=0.8,ax=ax[0,1],color='#9dff11')
ax[0,1].set_title('Feature Importance in AdaBoost')

gbc=GradientBoostingClassifier(n_estimators=500,learning_rate=0.1,random_state=0)
gbc.fit(X,Y)
pd.Series(gbc.feature_importances_, X.columns).sort_values(ascending=True).plot.barh(width=0.8,ax=ax[1,0],cmap='RdYlGn_r')
ax[1,0].set_title('Feature Importance in Gradient Boosting')

xgbc=xg.XGBClassifier(n_estimators=900,learning_rate=0.1)
xgbc.fit(X,Y)
pd.Series(xgbc.feature_importances_, X.columns).sort_values(ascending=True).plot.barh(width=0.8,ax=ax[1,1],color='#FD0F00')
ax[1,1].set_title('Feature Importance in XgBoost')

plt.show()      

不同模型对比:

基于KNN算法的iris数据集分类

特征分布情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pd.plotting.scatter_matrix(X_train, 
                           c=y_train, 
                           figsize=(15, 15),
                           marker='o', 
                           hist_kwds={'bins': 20}, 
                           s=60,
                           alpha=.8
                          )

plt.show()

混淆矩阵:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.metrics import classification_report,f1_score,accuracy_score,confusion_matrix
sns.heatmap(confusion_matrix(y_pred, y_test), annot=True)
plt.show()

对新数据预测:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x_new = np.array([[5, 2.9, 1, 0.2]])

prediction = knn.predict(x_new)

基于随机森林算法的员工流失预测

不同教育背景下的人群对比:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig = go.Figure(data=[go.Pie(
    labels=attrition_by['EducationField'],
    values=attrition_by['Count'],
    hole=0.4,
    marker=dict(colors=['#3CAEA3', '#F6D55C']),
    textposition='inside'
)])


fig.update_layout(title='Attrition by Educational Field', 
                  font=dict(size=12), 
                  legend=dict(
                      orientation="h",
                      yanchor="bottom",
                      y=1.02, 
                      xanchor="right",
                      x=1
))

fig.show()

年龄和月收入关系:

类型编码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()

df['Attrition'] = le.fit_transform(df['Attrition'])
df['BusinessTravel'] = le.fit_transform(df['BusinessTravel'])
df['Department'] = le.fit_transform(df['Department'])
df['EducationField'] = le.fit_transform(df['EducationField'])
df['Gender'] = le.fit_transform(df['Gender'])
df['JobRole'] = le.fit_transform(df['JobRole'])
df['MaritalStatus'] = le.fit_transform(df['MaritalStatus'])
df['Over18'] = le.fit_transform(df['Over18'])
df['OverTime'] = le.fit_transform(df['OverTime'])

相关性分析:

基于LSTM的股价预测

LSTM网络模型搭建:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from keras.models import Sequential
from keras.layers import Dense, LSTM

model = Sequential()
# 输入层
model.add(LSTM(128, return_sequences=True, input_shape= (xtrain.shape[1], 1)))
# 隐藏层
model.add(LSTM(64, return_sequences=False))
model.add(Dense(25))
# 输出层
model.add(Dense(1))
# 模型概览
model.summary()

交叉验证实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
k = 5
number_val = len(xtrain) // k  # 验证数据集的大小
number_epochs = 20
all_mae_scores = []
all_loss_scores = []

for i in range(k):
    # 只取i到i+1部分作为验证集
    vali_X = xtrain[i * number_val: (i+1) * number_val]
    vali_y = ytrain[i * number_val: (i+1) * number_val]

    # 训练集
    part_X_train = np.concatenate([xtrain[:i * number_val],
                                  xtrain[(i+1) * number_val:]],
                                  axis=0
                                 ) 
    part_y_train = np.concatenate([ytrain[:i * number_val],
                                  ytrain[(i+1) * number_val:]],
                                  axis=0
                                 )
    
    print("pxt: \n",part_X_train[:3])
    print("pyt: \n",part_y_train[:3])
    
    # 模型训练
    history = model.fit(part_X_train,
                        part_y_train,
                        epochs=number_epochs,
                        # 传入验证集的数据
                        validation_data=(vali_X, vali_y),
                        batch_size=300,
                        verbose=0  # 0-静默模式 1-日志模式
                       )
    
    mae_history = history.history["mae"]
    loss_history = history.history["loss"]
    all_mae_scores.append(mae_history)
    all_loss_scores.append(loss_history)

时序预测

基于AMIRA的销量预测

自相关性图:

偏自相关性:

预测未来10天

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p,d,q = 5,1,2
model = sm.tsa.statespace.SARIMAX(df['Revenue'],
                                order=(p, d, q),
                                seasonal_order=(p, d, q, 12))
model = model.fit()
model.summary()
ten_predictions = model.predict(len(df), len(df) + 10)  # 预测10

基于prophet的天气预测

特征间的关系:

预测效果:

其他案例

python的6种实现99乘法表

提供2种:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(1, 10):
    for j in range(1, i+1):  # 例如3*34*4的情况,必须保证j能取到i值,所以i+1;range函数本身是不包含尾部数据
        print(f'{j}x{i}={i*j} ', end="")  # end默认是换行;需要改成空格
    print("\n")  # 末尾自动换空行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(1, 10):       # 外层循环
    j = 1      # 内层循环初始值
    while j <= i:      # 内层循环条件:从1开始循环
        print("{}x{}={}".format(i,j,(i*j)), end=' ')  # 输出格式
        j += 1  # j每循环一次加1,进入下次,直到j<=i的条件不满足,再进入下个i的循环中
    print("\n")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
i = 1  # i初始值

while i <= 9:  # 循环终止条件
    j = 1  # j初始值
    while j <= i:    # j的大小由i来控制
        print(f'{i}x{j}={i*j} ', end='')
        j += 1   # j每循环一次都+1,直到j<=i不再满足,跳出这个while循环 
    i += 1  # 跳出上面的while循环后i+1,只要i<9就换行进入下一轮的循环;否则结束整个循环
    print('\n')

python实现简易计算器(GUI界面)

提供部分代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk

root = tk.Tk()  
root.title("Standard Calculator")  
root.resizable(0, 0)  


e = tk.Entry(root,
             width=35,
             bg='#f0ffff',
             fg='black',
             borderwidth=5,
             justify='right',
             font='Calibri 15')

e.grid(row=0, column=0, columnspan=3, padx=12, pady=12)

# 点击按钮
def buttonClick(num): 
    temp = e.get(
    )  
    e.delete(0, tk.END)  
    e.insert(0, temp + num)  

# 清除按钮
def buttonClear():  
    e.delete(0, tk.END)


def buttonGet(oper):  
    global num1, math  
    num1 = e.get()  
    math = oper  
    e.insert(tk.END, math)
    try:
        num1 = float(num1)  
    except ValueError:  
        buttonClear()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常用机器学习代码汇总
皮大大
2023/08/25
4460
kaggle实战-银行用户流失预测
近年来,不论是传统行业还是互联网行业,都面临着用户流失问题。一般在银行、电话服务公司、互联网公司、保险等公司,经常使用客户流失分析和客户流失率作为他们的关键性业务指标之一。
皮大大
2023/08/25
2.1K0
极不均衡样本的信用卡欺诈分析
原notebook地址为:https://www.kaggle.com/code/janiobachmann/credit-fraud-dealing-with-imbalanced-datasets/notebook
皮大大
2023/08/25
5110
基于Titanic数据集的完整数据分析
本文是一个极度适合入门数据分析的案例,采用的是经典数据集:泰坦尼克数据集(train部分),主要内容包含:
皮大大
2023/05/05
1.4K0
(PyStan)零售价格贝叶斯策略建模(上)
定价是任何电子商务企业都面临的一个普遍问题,可以通过贝叶斯统计方法得到有效的解决。
AiTechYun
2019/09/25
1.6K0
(PyStan)零售价格贝叶斯策略建模(上)
Python数据挖掘|银行信用卡客户流失预测(kaggle)
越来越多的客户不再使用信用卡服务,银行的经理对此感到不安。如果有人能为他们预测哪些客户即将流失,他们将不胜感激,因为这样他们可以主动向客户提供更好的服务,并挽回这些即将流失的客户。
刘早起
2021/01/07
5.3K0
Python数据挖掘|银行信用卡客户流失预测(kaggle)
金融数据分析库yfinance,初次使用体验!
今天给大家介绍一个金融数据分析库yfinance,主要是基于该库下的股票数据分析及股价预测(使用LSTM模型)
皮大大
2023/08/29
15K2
专栏 | 基于 Jupyter 的特征工程手册:数据预处理(一)
特征工程在机器学习中的重要性不言而喻,恰当的特征工程能显著提升机器学习模型性能。我们在 Github 上整理编写了一份系统的特征工程教程,供大家参考学习。
红色石头
2022/01/14
1K0
专栏 | 基于 Jupyter 的特征工程手册:数据预处理(一)
kaggle实战-精美可视化与时序预测
本文是基于一份商品销售数据,使用Pandas、seaborn、statmodels、sklearn、线性回归预测、xgboost等库和方法进行多角度的可视化分析和时序预测。
皮大大
2023/08/25
1.2K0
kaggle实战-精美可视化与时序预测
基于长短期记忆模型的股价预测及可视化
1、https://easyai.tech/ai-definition/lstm/
皮大大
2024/09/09
2190
关系(一)利用python绘制散点图
散点图可以了解数据之间的各种相关性,如正比、反比、无相关、线性、指数级、 U形等,而且也可以通过数据点的密度(辅助拟合趋势线)来确定相关性的强度。另外,也可以探索出异常值(在远超出一般聚集区域的数据点称)。
HsuHeinrich
2024/03/26
3970
关系(一)利用python绘制散点图
训练和测试数据的观察
在开始竞赛之前,我们要检查测试数据集的分布与训练数据集的分布,如果可能的话,看看它们之间有多么不同。这对模型的进一步处理有很大帮助.
用户1332428
2018/07/30
1.3K0
训练和测试数据的观察
【数据挖掘项目】Airbnb新用户的民宿预定结果预测
摘要 本文主要根据对Airbnb 新用户的民宿预定结果进行预测,完整的陈述了从 数据探索到 特征工程到 构建模型的整个过程。 其中: 1数据探索部分主要基于 pandas库,利用常见的: head(), value_counts(), describe(), isnull(), unique()等函数以及通过 matplotlib作图对数据进行理解和探索; 2.特征工程部分主要是通过从日期中提取 年月日, 季节, weekday,对年龄进行 分段,计算相关特征之间的 差值,根据用户id进行分组,从而统计一些特征变量的 次数, 平均值, 标准差等等,以及通过 one hot encoding和 labels encoding对数据进行编码来提取特征; 3.构建模型部分主要基于 sklearn包, xgboost包,通过调用不同的模型进行预测,其中涉及到的模型有,逻辑回归模型 LogisticRegression,树模型: DecisionTree,RandomForest,AdaBoost,Bagging,ExtraTree,GraBoost,SVM模型: SVM-rbf,SVM-poly,SVM-linear, xgboost,以及通过改变 模型的参数和 数据量大小,来观察 NDGG的评分结果,从而了解不同模型,不同参数和不同数据量大小对预测结果的影响.
Datawhale
2019/07/08
2.3K0
【数据挖掘项目】Airbnb新用户的民宿预定结果预测
[数据科学] 基于基因表达监测预测肿瘤
通过基因表达监测(DNA微阵列)对新的癌症病例进行分类,从而为鉴定新的癌症类别和将肿瘤分配到已知类别提供了一般方法。这些数据用于对患有急性髓性白血病(AML)和急性淋巴细胞白血病(ALL)的患者进行分类。
DrugAI
2021/01/29
3890
乳腺癌预测_EDA_Models
在医学领域的不断创新中,技术的进步为疾病的早期预测和诊断提供了全新的可能性。乳腺癌作为女性最常见的癌症之一,对于其早期预测变得尤为关键。本文将引领您探索乳腺癌预测中的数据探索分析(Exploratory Data Analysis,简称EDA)以及相关的模型应用。通过深入挖掘乳腺癌数据集,我们将揭示隐藏在背后的模式和趋势,为医学领域的科学家、数据科学家和临床医生提供更有力的工具,以更准确地预测乳腺癌的风险。
老虎也淘气
2024/01/30
2720
乳腺癌预测_EDA_Models
【内含baseline】Kaggle机器学习新赛指南!
日前,Kaggle发布了ICR - Identifying Age-Related Conditions疾病识别大赛。这是一个机器学习中的二分类任务,需要你使用ML的方法对病人进行诊断,判断病人是否有相关疾病,从而为医生提供进行合理诊断的依据。
zenRRan
2023/08/22
2620
【内含baseline】Kaggle机器学习新赛指南!
8种数值变量的特征工程方法
本文主要介绍处理数值变量特征工程,将介绍使用Python的Scikit-Learn库、Numpy等工具处理数值的高级特征工程技术,旨在提升机器学习模型的效能。
皮大大
2025/05/09
960
干货 | 20个教程,掌握时间序列的特征分析(附代码)
【导语】时间序列是指以固定时间为间隔的序列值。本篇教程将教大家用 Python 对时间序列进行特征分析。
AI科技大本营
2019/07/11
6.1K0
干货 | 20个教程,掌握时间序列的特征分析(附代码)
Python机器学习(1)-- 自己设计一个感知机(Perceptron)分类算法
红色石头
2017/12/28
2.1K0
Python机器学习(1)-- 自己设计一个感知机(Perceptron)分类算法
Python异常值的自动检测实战案例
异常值检测(outlier)是一种数据挖掘过程,用于确定数据集中发现的异常值并确定其出现的详细信息。当前自动异常检测至关重要,因为大量数据无法手动标记异常值。自动异常检测具有广泛的应用,例如信用卡欺诈检测,系统健康监测,故障检测以及传感器网络中的事件检测系统等。今天我们就通过使用python来实现异常值的自动检测系统的实战开发。我们将会使用以下技术来实现异常值检测:
小白学视觉
2024/09/11
2320
Python异常值的自动检测实战案例
推荐阅读
相关推荐
常用机器学习代码汇总
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验