用Python玩转CSV数据:读取文件+可视化全攻略(附避坑指南)

一、为什么要用Python处理CSV?(你可能不知道的隐藏优势)

还在用Excel手动处理表格数据吗?兄弟你out了!(敲黑板)Python处理CSV文件有三大必杀技:

  1. 批量处理100万行数据只要3秒(Excel早卡死了!)
  2. 自动清洗脏数据的神操作(正则表达式YYDS)
  3. 可视化直接生成高清大图(PPT都不用开了)

二、读取CSV的N种姿势(总有一款适合你)

2.1 基础版:csv模块(适合小文件)

import csv
with open('data.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    header = next(reader)  # 提取表头(重要!)
    for row in reader:
        print(row[0])  # 输出第一列数据

⚠️注意:文件路径要用原始字符串!比如 r'C:\data\test.csv'(不然斜杠会搞事情)

2.2 进阶版:pandas(打工人必备)

import pandas as pd
df = pd.read_csv('data.csv', 
                sep=',',          # 分隔符(遇到tsv文件改\t)
                header=0,         # 指定表头行
                na_values=['NA']) # 定义缺失值
print(df.describe())  # 瞬间生成统计摘要!

2.3 避坑指南(血泪教训总结)

  • 编码问题:遇到乱码先试 encoding='gbk'(特别是中文文件)
  • 内存爆炸:大文件用 chunksize=1000 分块读取(拯救你的8G内存)
  • 日期解析:parse_dates=['日期列'] 自动转换时间格式(别再用字符串硬刚了!)

三、数据可视化实战(让老板眼前一亮的技巧)

3.1 Matplotlib基础绘图

import matplotlib.pyplot as plt
plt.plot(df['日期'], df['销售额'], 
        linestyle='--',  # 虚线
        marker='o',      # 数据点标记
        color='#FF6347') # 番茄红色
plt.title('2023销售趋势', fontsize=14)
plt.xticks(rotation=45)  # X轴标签旋转(防重叠!)
plt.savefig('sales.png', dpi=300)  # 保存高清图

3.2 Seaborn高级玩法

import seaborn as sns
sns.set(style='whitegrid')  # 设置主题(逼格瞬间提升)
g = sns.FacetGrid(df, col='地区')  # 按地区分面绘图
g.map(sns.lineplot, '月份', '销量')
g.add_legend()  # 添加图例
plt.tight_layout()  # 自动调整布局(防元素重叠)

3.3 可视化常见翻车现场

  • 中文乱码:提前设置 plt.rcParams['font.sans-serif'] = ['SimHei']
  • 图片模糊:保存时设置 dpi=300 以上(打印必备)
  • 颜色灾难:使用 sns.color_palette('pastel') 柔色系(告别荧光色)

四、高级技巧:数据清洗自动化(价值10W的经验)

4.1 处理缺失值的骚操作

# 删除缺失超过50%的列
df = df.dropna(thresh=len(df)*0.5, axis=1)  

# 用前后值填充(适合时间序列)
df.fillna(method='ffill', inplace=True)

4.2 重复数据处理三连击

# 方法1:暴力去重
df.drop_duplicates(inplace=True)

# 方法2:条件去重(保留最新记录)
df.sort_values('时间').drop_duplicates('用户ID', keep='last')

# 方法3:模糊匹配去重(用fuzzywuzzy库)
from fuzzywuzzy import process
matches = process.dedupe(df['姓名'], threshold=90)

五、实战案例:电商数据分析全流程(手把手教学)

假设我们有一个 orders.csv 包含:

  • 订单ID
  • 用户ID
  • 下单时间
  • 订单金额
  • 商品类别
# 完整处理流程
df = pd.read_csv('orders.csv')
df['下单时间'] = pd.to_datetime(df['下单时间'])  # 转换时间格式

# 按周聚合数据
weekly_sales = df.resample('W', on='下单时间')['订单金额'].sum()

# 绘制热力图
pivot_table = df.pivot_table(index=df['下单时间'].dt.hour,
                            columns=df['下单时间'].dt.dayofweek,
                            values='订单金额',
                            aggfunc='sum')
sns.heatmap(pivot_table, cmap='YlGnBu')

六、常见问题Q&A(遇到问题先看这里)

Q:为什么我的折线图断断续续?
A:八成是数据有缺失!先用 df.isnull().sum() 查缺失值

Q:读取10G超大文件直接内存爆炸怎么办?
A:试试这两个方案:

  1. 使用 dask 库进行分布式读取
  2. 改用数据库(比如SQLite)暂存数据

Q:怎么把图片嵌入到Excel里?
A:用 openpyxl 库的 add_image() 方法(比手动操作快10倍!)


下次遇到CSV文件时,别再复制粘贴了!(拍肩)把这些代码片段保存好,工作效率直接翻倍。如果遇到奇葩数据问题,欢迎评论区扔过来——见招拆招我最擅长了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值