用Python做数据分析:5个实战案例

适合读者:有一定Python基础,想学习数据分析的读者。


一、工具准备

  • Python 3.x
  • Jupyter Notebook(推荐用于交互式分析)
  • Pandas:数据处理与分析
  • MatplotlibSeaborn:数据可视化

安装方法:

bash 复制代码
pip install jupyter pandas matplotlib seaborn

二、实战案例

案例1:销售数据趋势分析(Pandas分组统计)

目标:分析某产品每月销售额趋势。

示例数据:

python 复制代码
import pandas as pd
# 直接用字典模拟数据
sales_data = {
    'date': ['2023-01-05', '2023-01-15', '2023-02-10', '2023-02-20', '2023-03-05'],
    'product': ['A', 'A', 'A', 'A', 'A'],
    'sales': [120, 150, 200, 180, 210]
}
sales = pd.DataFrame(sales_data)
sales['date'] = pd.to_datetime(sales['date'])
sales['month'] = sales['date'].dt.to_period('M')
monthly_sales = sales.groupby('month')['sales'].sum().reset_index()
print(monthly_sales)

结果解读:

  • 输出每月总销售额,可用于趋势分析和后续可视化。

案例2:用户行为数据可视化(Matplotlib绘制折线图/柱状图)

目标:展示网站每日活跃用户(DAU)变化。

示例数据:

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文字体(替换为你的系统支持的字体名)
plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows
# plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']  # Mac
# plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei']  # Linux
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False  
# 用字典模拟数据
user_data = pd.DataFrame({
    'date': pd.date_range('2023-01-01', periods=7),
    'dau': [320, 400, 380, 420, 390, 410, 430]
})
plt.figure(figsize=(10, 5))
plt.plot(user_data['date'], user_data['dau'], marker='o', label='DAU')
plt.title('每日活跃用户趋势')
plt.xlabel('日期')
plt.ylabel('活跃用户数')
plt.legend()
plt.grid(True)
plt.show()

结果解读:

  • 折线图直观展示了活跃用户的波动和趋势,便于发现高峰和低谷。

案例3:电影评分数据探索(Seaborn热力图分析相关性)

目标:探索不同电影特征(如评分、时长、票房)之间的相关性。

示例数据:

python 复制代码
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 用字典模拟数据
movies = pd.DataFrame({
    'title': ['Movie A', 'Movie B', 'Movie C', 'Movie D'],
    'rating': [8.2, 7.5, 6.8, 8.0],
    'duration': [120, 95, 110, 130],
    'box_office': [1.5e8, 8.0e7, 6.5e7, 2.0e8]
})
correlation = movies[['rating', 'duration', 'box_office']].corr()
plt.figure(figsize=(6, 4))
sns.heatmap(correlation, annot=True, cmap='YlGnBu')
plt.title('电影特征相关性热力图')
plt.show()

结果解读:

  • 热力图展示了各特征之间的相关性(如评分与票房、时长与票房等),有助于发现潜在的影响关系。

案例4:社交媒体文本情感分析(简单NLP示例)

目标:对社交媒体评论进行情感极性分类(正面/负面)。

示例数据:

python 复制代码
import pandas as pd
from textblob import TextBlob
# 用字典模拟数据
comments = pd.DataFrame({
    'comment': [
        'I love this product!',
        'Terrible experience...',
        'Not bad, could be better.',
        'Absolutely fantastic!',
        'Worst service ever.'
    ]
})
def get_sentiment(text):
    return TextBlob(str(text)).sentiment.polarity
comments['sentiment'] = comments['comment'].apply(get_sentiment)
print(comments[['comment', 'sentiment']])

结果解读:

  • sentiment 值大于0为正面,小于0为负面,等于0为中性。可据此统计正负面评论比例。

案例5:预测模型入门(线性回归预测房价)

目标:用线性回归模型预测房价。

示例数据:

python 复制代码
import pandas as pd
from sklearn.linear_model import LinearRegression
# 用字典模拟数据
house = pd.DataFrame({
    'area': [80, 120, 100, 90, 110],
    'bedrooms': [2, 3, 2, 1, 3],
    'price': [500, 800, 650, 480, 780]
})
X = house[['area', 'bedrooms']]
y = house['price']
model = LinearRegression()
model.fit(X, y)
pred = model.predict([[100, 2]])
print(f"预测100平米2居室房价:{pred[0]:.2f}")

结果解读:

  • 通过输入面积和卧室数,模型可预测房价,实现数据驱动的房产估价。

总结:Python在数据分析中的优势

  • 生态丰富,工具链完善(Pandas、Matplotlib、Seaborn、Scikit-learn等)。
  • 代码简洁,易于上手,适合快速原型开发和数据探索。
  • 社区活跃,资料丰富,适合自学和进阶。

以上5个案例涵盖了数据分析的常见场景,建议读者动手实践、结合自己的数据进行深入探索。

相关推荐
落鹜秋水4 小时前
xss总结
开发语言·python
Norvyn_74 小时前
LeetCode|Day19|14. 最长公共前缀|Python刷题笔记
笔记·python·leetcode
单线程_014 小时前
血条识别功能实现及原理
python
拉一次撑死狗5 小时前
Python绘制数据(二)
开发语言·python·信息可视化
花火|6 小时前
关于pytorch虚拟环境及具体bug问题修改
人工智能·pytorch·python
斟的是酒中桃6 小时前
【学习记录】智能客服小桃(进度更新ing)
人工智能·python·学习·语言模型·langchain·agent
西猫雷婶6 小时前
python学智能算法(十九)|SVM基础概念-超平面
开发语言·人工智能·python·深度学习·算法·机器学习·支持向量机
小白的程序空间7 小时前
Anaconda Prompt中删除库虚拟环境【保姆级教程】
linux·开发语言·python
EulerBlind7 小时前
【工具】Pycharm隐藏侧边灯泡提示
ide·python·pycharm