用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个案例涵盖了数据分析的常见场景,建议读者动手实践、结合自己的数据进行深入探索。

相关推荐
头发还在的女程序员16 分钟前
三天搞定招聘系统!附完整源码
开发语言·python
温轻舟22 分钟前
Python自动办公工具06-设置Word文档中表格的格式
开发语言·python·word·自动化工具·温轻舟
花酒锄作田35 分钟前
[python]FastAPI-Tracking ID 的设计
python·fastapi
AI-智能1 小时前
别啃文档了!3 分钟带小白跑完 Dify 全链路:从 0 到第一个 AI 工作流
人工智能·python·自然语言处理·llm·embedding·agent·rag
d***95622 小时前
爬虫自动化(DrissionPage)
爬虫·python·自动化
APIshop2 小时前
Python 零基础写爬虫:一步步抓取商品详情(超细详解)
开发语言·爬虫·python
二川bro2 小时前
AutoML自动化机器学习:Python实战指南
python·机器学习·自动化
杨超越luckly3 小时前
基于 Overpass API 的城市电网基础设施与 POI 提取与可视化
python·数据可视化·openstreetmap·电力数据·overpass api
q***23574 小时前
python的sql解析库-sqlparse
数据库·python·sql
18你磊哥4 小时前
Django WEB 简单项目创建与结构讲解
前端·python·django·sqlite