Python处理JSON转CSV的实战技巧
搞数据处理的兄弟们都懂,JSON和CSV就像豆浆油条——经常要搭配着用。今天咱们重点唠唠怎么用Python把JSON格式的数据转成CSV表格,顺带解决网络请求时可能遇到的IP被封这类头疼问题。
准备工作别马虎
先装好这两个库:pandas和requests。用天启代理的兄弟注意了,他们的API返回的数据可以直接用,记得在请求头里加上{"Content-Type": "application/json"}
。这里有个小坑:如果数据量太大,建议先存本地再处理。
import requests
from pandas import json_normalize
proxies = {
'http': 'http://tianqi-proxy.cn:8000',
'https': 'http://tianqi-proxy.cn:8000'
}
response = requests.get('数据接口地址', proxies=proxies)
数据清洗有门道
拿到数据先看结构,嵌套结构和多级列表是常见坑点。比如这种结构:
{
"user": [
{"name": "张三", "contacts": {"tel": "138001", "email": "zhang@xx.com"}},
{"name": "李四", "contacts": {"tel": "139002"}}
]
}
处理这种多层嵌套,用json_normalize
的时候要指定meta
参数:
data = response.json()
df = json_normalize(data['user'], meta=['name'],
record_path=['contacts'])
转换输出要细心
转CSV时注意三个关键参数:
- encoding='utf_8_sig' —— 解决中文乱码
- index=False —— 去掉多余索引列
- 处理空值 —— 用
fillna('N/A')
填充缺失数据
实战QA排雷指南
Q:为啥我的CSV打开是乱码?
A:八成是编码问题,试试用记事本打开另存为UTF-8格式。用天启代理的兄弟可以检查下接口返回的编码是否统一。
Q:转换后数据对不上列怎么办?
A:这种情况多发生在动态字段的数据上。建议先用pd.json_normalize
展开数据,再用explode()
处理列表结构。
Q:请求老是被中断咋整?
A:这时候就该用上天启代理的高可用IP池了。他们的IP可用率≥99%,比普通代理稳定得多,特别适合需要长时间跑数据采集的情况。
异常处理不能少
给代码加个双保险:
try:
df.to_csv('output.csv', encoding='utf_8_sig', index=False)
except PermissionError:
print("文件被占用了!关掉Excel再试")
except Exception as e:
print(f"出错了:{str(e)}")
最后说句实在话,数据处理这活儿,工具用对就成功一半。像天启代理这种自建机房的服务商,响应延迟能压到10毫秒以内,比用免费代理省心多了。特别是处理大量API请求时,稳定可靠的代理IP能让你少掉好多头发。