温馨提示×

Ubuntu Python数据分析实战案例

小樊
85
2025-08-11 16:30:38
栏目: 编程语言

以下是基于Ubuntu环境的Python数据分析实战案例,涵盖环境搭建、数据处理到可视化全流程:

案例1:用户行为数据分析(基于模拟数据)

场景:分析用户登录日志,统计活跃时段、异常登录等
步骤

  1. 环境准备
    sudo apt update  
    sudo apt install python3 python3-pip  
    pip3 install pandas numpy matplotlib seaborn  
    
  2. 数据模拟与读取
    import pandas as pd  
    # 模拟用户登录日志(实际可从CSV/数据库读取)  
    data = pd.DataFrame({  
        'user_id': [1, 2, 1, 3, 2, 1],  
        'login_time': ['2025-08-01 08:00', '2025-08-01 10:30', '2025-08-02 09:15',  
                      '2025-08-02 23:45', '2025-08-03 14:00', '2025-08-03 00:10'],  
        'status': ['success', 'success', 'success', 'fail', 'success', 'fail']  
    })  
    data['login_time'] = pd.to_datetime(data['login_time'])  
    
  3. 数据清洗与分析
    # 转换时间格式,删除无效数据  
    data = data.dropna().sort_values('login_time')  
    # 按小时统计登录次数  
    data['hour'] = data['login_time'].dt.hour  
    login_stats = data.groupby('hour')['user_id'].count().reset_index()  
    # 异常登录检测(如非工作时段登录)  
    abnormal_logins = data[(data['hour'] < 8) | (data['hour'] > 18) & (data['status'] == 'success')]  
    
  4. 可视化
    import matplotlib.pyplot as plt  
    # 绘制活跃时段分布图  
    plt.bar(login_stats['hour'], login_stats['user_id'], color='skyblue')  
    plt.xlabel('Hour of Day')  
    plt.ylabel('Login Count')  
    plt.title('User Active Hours')  
    plt.show()  
    

案例2:电商销售数据趋势分析

场景:分析某电商平台月度销售额、商品类别占比及用户地域分布
步骤

  1. 数据准备
    从Kaggle获取电商数据集(如sales_data.csv),包含字段:order_idproduct_idcategorypriceregionorder_date
  2. 数据处理
    # 读取数据  
    sales_data = pd.read_csv('sales_data.csv')  
    # 转换日期格式,提取月份  
    sales_data['order_date'] = pd.to_datetime(sales_data['order_date'])  
    sales_data['month'] = sales_data['order_date'].dt.month  
    # 按月统计销售额  
    monthly_sales = sales_data.groupby('month')['price'].sum().reset_index()  
    # 按商品类别统计销售额占比  
    category_sales = sales_data.groupby('category')['price'].sum().sort_values(ascending=False)  
    # 按地域统计订单量  
    region_orders = sales_data['region'].value_counts().reset_index()  
    
  3. 可视化分析
    # 月度销售额折线图  
    plt.plot(monthly_sales['month'], monthly_sales['price'], marker='o', color='green')  
    plt.title('Monthly Sales Trend')  
    plt.xlabel('Month')  
    plt.ylabel('Sales Amount')  
    plt.grid(True)  
    plt.show()  
    # 商品类别占比饼图  
    plt.pie(category_sales, labels=category_sales.index, autopct='%1.1f%%', startangle=90)  
    plt.title('Product Category Distribution')  
    plt.show()  
    

案例3:多源数据关联分析(用户画像)

场景:结合用户基本信息与行为数据生成标签
步骤

  1. 数据准备
    • 用户基本信息表:users.csv(含user_idagegenderregion
    • 用户行为数据表:user_actions.csv(含user_idpage_viewspurchase_countlogin_days
  2. 数据关联与特征工程
    # 合并数据  
    user_profile = pd.merge(users, user_actions, on='user_id', how='left')  
    # 计算用户活跃度标签  
    user_profile['activity_level'] = pd.cut(user_profile['login_days'],  
                                           bins=[-1, 30, 90, 180],  
                                           labels=['Low', 'Medium', 'High'])  
    # 计算用户价值标签(基于购买金额与浏览量)  
    user_profile['value_score'] = user_profile['purchase_count'] * 10 + user_profile['page_views']  
    user_profile['value_label'] = pd.cut(user_profile['value_score'],  
                                        bins=[0, 100, 500, 1000],  
                                        labels=['Low Value', 'Medium Value', 'High Value'])  
    
  3. 可视化用户分布
    # 地域-活跃度热力图  
    import seaborn as sns  
    pivot_table = user_profile.pivot_table(index='region', columns='activity_level',  
                                          values='user_id', aggfunc='count', fill_value=0)  
    sns.heatmap(pivot_table, annot=True, cmap='YlGnBu')  
    plt.title('User Activity by Region')  
    plt.show()  
    

关键工具与库说明

  • 基础处理:Pandas(数据清洗、转换)、NumPy(数值计算)
  • 可视化:Matplotlib(基础图表)、Seaborn(高级统计图表)
  • 大数据场景:PySpark(分布式计算,适合超大规模数据)
  • 交互式分析:Jupyter Notebook(支持代码、可视化混排)

以上案例可根据实际数据集调整,重点演示Ubuntu下Python数据分析的核心流程,涵盖从数据获取到洞察的全链路操作。

0