当前位置: 首页 > news >正文

Day17: 数据魔法学院:用Pandas打开奇幻世界

目录

    • 🧙♂️ 第一章:魔法基础 - 认识你的魔杖DataFrame
      • 1.1 召唤你的第一只数据精灵
      • 1.2 魔杖基本咒语
    • 🧼 第二章:净化仪式 - 数据清洗大作战
      • 2.1 处理混乱的数据
      • 2.2 高级变形术
    • 🔍 第三章:预言水晶球 - 数据洞察魔法
      • 3.1 基础占卜术
      • 3.2 高级预言术
    • 🧪 第四章:魔药实验室 - 实战配方
      • 4.1 魔药销售分析
      • 4.2 数据融合魔法
    • 🧠 第五章:智慧宝典 - 最佳实践指南
      • 5.1 魔法师的自我修养
      • 5.2 禁术警告
    • 🎓 毕业考试:你的第一个分析项目
    • 🌈 魔法师誓言

各位数据巫师学徒们!准备好你们的魔法棒(其实是键盘),我们要穿越到由混乱数据组成的魔法世界,用Pandas将原始数据点石成金!✨ 从今天起,你不再是数据的搬运工,而是数据的炼金术师!


🧙♂️ 第一章:魔法基础 - 认识你的魔杖DataFrame

1.1 召唤你的第一只数据精灵

import pandas as pd
from faker import Faker# 用魔法粉末生成虚拟数据
fake = Faker()
data_entries = []for _ in range(100):data_entries.append({'魔法师ID': fake.uuid4()[:8],'魔力值': round(fake.random.uniform(50, 200), 1),'擅长元素': fake.random_element(['火', '水', '风', '土']),'毕业院校': fake.company(),'注册日期': fake.date_this_decade()})# 铸造你的魔法卷轴(DataFrame)
mage_df = pd.DataFrame(data_entries)
print("第一份魔法契约已生成!")
print(mage_df.head(3))

1.2 魔杖基本咒语

# 选择特定魔法师
fire_mages = mage_df[mage_df['擅长元素'] == '火']# 添加新能力字段
mage_df['战斗力'] = mage_df['魔力值'] * 0.8 + 20# 魔法师排行榜
top_mages = mage_df.sort_values('魔力值', ascending=False).head(5)# 元素派系统计
element_counts = mage_df.groupby('擅长元素').size()

🧼 第二章:净化仪式 - 数据清洗大作战

2.1 处理混乱的数据

# 模拟脏数据
mage_df.loc[::10, '魔力值'] = None
mage_df.loc[::7, '毕业院校'] = '未知'# 缺失值处理魔法
clean_df = (mage_df.dropna(subset=['魔力值'])  # 删除缺失魔力值的记录.fillna({'毕业院校': '神秘学院'})  # 填充未知院校.query('魔力值 < 190')  # 排除异常值)# 数据格式转换
clean_df['注册日期'] = pd.to_datetime(clean_df['注册日期'])

2.2 高级变形术

# 魔法值分级
def classify_magic(power):if power < 100: return '见习'elif power < 150: return '中级'else: return '大魔导师'clean_df['等级'] = clean_df['魔力值'].apply(classify_magic)# 元素组合魔法(交叉分析)
element_power = pd.pivot_table(clean_df,values='魔力值',index='擅长元素',columns='等级',aggfunc='mean')

🔍 第三章:预言水晶球 - 数据洞察魔法

3.1 基础占卜术

# 描述性统计
magic_stats = clean_df['魔力值'].describe()# 元素分布比例
element_distribution = (clean_df['擅长元素'].value_counts(normalize=True).mul(100).round(1).astype(str) + '%')# 时间魔法(按月统计)
monthly_registration = (clean_df.groupby(clean_df['注册日期'].dt.to_period('M')).size())

3.2 高级预言术

import matplotlib.pyplot as plt# 魔力值分布图
plt.figure(figsize=(10, 6))
clean_df['魔力值'].plot(kind='hist',bins=20,color='purple',edgecolor='black')
plt.title('魔法师能力分布图')
plt.xlabel('魔力值')
plt.ylabel('人数')
plt.show()# 元素战力对比
(clean_df.groupby('擅长元素')['战斗力'].mean().sort_values().plot(kind='barh',color=['#ff9999','#66b3ff','#99ff99','#ffcc99'],title='各元素系平均战斗力'))

🧪 第四章:魔药实验室 - 实战配方

4.1 魔药销售分析

# 生成魔药销售数据
potion_data = {'订单ID': [f'ORD{1000+i}' for i in range(500)],'魔药类型': fake.random_elements(elements=['清醒药剂', '爱情魔药', '隐身药水'], length=500),'销售额': [round(fake.random.uniform(50, 500), 2) for _ in range(500)],'销售地区': fake.random_elements(elements=['北方大陆', '南方群岛', '西部荒漠'], length=500),'客户类型': fake.random_elements(elements=['个人', '批发商'], length=500)
}potion_df = pd.DataFrame(potion_data)# 添加日期数据
potion_df['销售日期'] = pd.date_range(start='2023-01-01', periods=500, freq='D')# 复杂分析示例
regional_sales = (potion_df.groupby(['销售地区', potion_df['销售日期'].dt.month]).agg({'销售额': ['sum', 'mean']}))

4.2 数据融合魔法

# 创建客户信息表
customers = pd.DataFrame({'订单ID': potion_df['订单ID'].sample(200),'客户年龄': [fake.random_int(18, 80) for _ in range(200)],'客户评分': [fake.random_int(1, 5) for _ in range(200)]
})# 数据连接
merged_df = pd.merge(potion_df, customers, on='订单ID', how='left')# 多层分析
age_group_sales = (merged_df.assign(年龄段=pd.cut(merged_df['客户年龄'],bins=[0, 25, 40, 55, 100],labels=['新生代', '中生代', '资深', '传奇'])).groupby(['年龄段', '魔药类型']).agg({'销售额': 'sum'}))

🧠 第五章:智慧宝典 - 最佳实践指南

5.1 魔法师的自我修养

# 保存你的魔法成果
clean_df.to_csv('clean_mage_data.csv', index=False)# 高效查询技巧
efficient_search = (clean_df.query('魔力值 > 120 & 擅长元素 == "火"').sort_values('注册日期').head(10))# 内存优化咒语
def optimize_memory(df):for col in df.columns:col_type = df[col].dtypeif col_type == 'float64':df[col] = df[col].astype('float32')elif col_type == 'int64':df[col] = df[col].astype('int32')return dfoptimized_df = optimize_memory(clean_df.copy())

5.2 禁术警告

# 危险操作示例(请勿模仿!)
unsafe_operation = (original_df.drop(columns=['重要字段']).fillna(0).replace({'特殊值': '未知'}))

🎓 毕业考试:你的第一个分析项目

  1. 分析不同魔法学院的战斗力差异
  2. 找出每月魔力增长最快的魔法师
  3. 预测下季度魔药销量趋势
  4. 创建交互式数据仪表板
  5. 设计自动化的数据清洗管道
# 通关秘籍:魔法快捷键
print("常用咒语列表:")
print(pd.options.display.max_columns = None)  # 显示所有列
print(df.sample(5))  # 快速查看随机样本
print(df.nlargest(5, '魔力值'))  # 排行榜前五
print(df.pipe(optimize_memory))  # 管道操作

🌈 魔法师誓言

  • 永远备份你的原始数据
  • 经常用.head()检查进度
  • 善用链式方法保持代码整洁
  • 警惕SettingWithCopyWarning警告
  • 可视化是说服麻瓜的最好武器

“数据不会说谎,但需要优秀的魔法师来讲述真相。” —— 《Pandas魔法书》第127页

http://www.dtcms.com/a/338014.html

相关文章:

  • MySQL面试题:MyISAM vs InnoDB?聚簇索引是什么?主键为何要趋势递增?
  • 从“换灯节能”到“智能调光”:城市智慧照明技术升级的节能革命
  • LangChain4j (3) :AiService工具类、流式调用、消息注解
  • 吴恩达 Machine Learning(Class 2)
  • 数字时代著作权侵权:一场资本与法律的博弈
  • 「Flink」业务搭建方法总结
  • 嵌入式设备Lwip协议栈实现功能
  • 摔倒检测数据集:1w+图像,yolo标注
  • 02.Linux基础命令
  • 8.18 机器学习-决策树(1)
  • docker部署flask并迁移至内网
  • Zephyr下控制ESP32S3的GPIO口
  • RK3568 NPU RKNN(六):RKNPU2 SDK
  • FlycoTabLayout CommonTabLayout 支持Tab选中字体变大 选中tab的加粗效果首次无效的bug
  • 探索性测试:灵活找Bug的“人肉探测仪”
  • 前端 大文件分片下载上传
  • 宝塔面板多Python版本管理与项目部署
  • excel表格 Vue3(非插件)
  • day25|学习前端js
  • Linux: RAID(磁盘冗余阵列)配置全指南
  • 损失函数与反向传播 小土堆pytorch记录
  • FPGA-Vivado2017.4-建立AXI4用于单片机与FPGA之间数据互通
  • 计算机组成原理(9) - 整数的乘除法运算
  • js计算两个经纬度之间的角度
  • Python字符串连接与合并工程实践:从基础到高性能解决方案
  • 【笔记】位错的定义和分类
  • B站 韩顺平 笔记 (Day 22)
  • 【人工智能】2025年AI代理失控危机:构建安全壁垒,守护智能未来
  • 规避(EDR)安全检测--避免二进制文件落地
  • 面向对象爬虫进阶:类封装实现高复用爬虫框架​