以下是基于Ubuntu环境的Python数据分析实战案例,涵盖环境搭建、数据处理到可视化全流程:
场景:分析用户登录日志,统计活跃时段、异常登录等
步骤:
sudo apt update
sudo apt install python3 python3-pip
pip3 install pandas numpy matplotlib seaborn
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'])
# 转换时间格式,删除无效数据
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')]
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()
场景:分析某电商平台月度销售额、商品类别占比及用户地域分布
步骤:
sales_data.csv),包含字段:order_id、product_id、category、price、region、order_date。# 读取数据
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()
# 月度销售额折线图
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()
场景:结合用户基本信息与行为数据生成标签
步骤:
users.csv(含user_id、age、gender、region)user_actions.csv(含user_id、page_views、purchase_count、login_days)# 合并数据
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'])
# 地域-活跃度热力图
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()
以上案例可根据实际数据集调整,重点演示Ubuntu下Python数据分析的核心流程,涵盖从数据获取到洞察的全链路操作。