数据分析(数据读取与写入)

开篇

上一篇是用手工数据造表,这一篇我直接用了一份 600 多行的真实销售数据 data/sales.csv,学两件最实用的事:读文件和写文件。

读取数据:read_csv

最朴素的写法是一行:

df = pd.read_csv('data/sales.csv')

但这份文件里有 7 列(订单号、产品类别、产品名称、销售数量、单价、客户所在城市、支付方式、订单日期),我这一章只需要其中 4 列,于是用 usecols 参数在读取阶段就把不需要的列丢掉:

df = pd.read_csv('data/sales.csv',

usecols='订单号', '产品类别', '销售数量', '单价')

我的体会是:usecols 这种"在读取时就筛掉"的写法,比先全读进来再删列要省内存也更清晰。

顺便说一个我遇到的坑:sales.csv 是中文表头,用记事本或者 PowerShell 直接打开看是乱码的,但 Pandas 读进来显示完全正常。所以判断编码好不好,不要靠肉眼打开文件,要以程序读出来的结果为准。

处理数据:给表格加一列

读进来之后,数据分析最常见的第一步就是"造新列"。销售金额 = 销售数量 × 单价:

df'销售金额' = df'销售数量' * df'单价'

这行让我挺震撼的------没有 for 循环。如果是以前写 Python,我得一行一行遍历再乘,这里 Pandas 直接把两整列对应相乘(叫向量化运算),而且结果自动变成新的一列挂进表里。列名不存在时,这句等于"新建一列";列名已存在,就是覆盖。

顺便提醒一下自己:写 Python 脚本时习惯把中间结果 print 出来看,但在 Notebook 里我把赋值那行的 df 单独注释掉放在最后一行,就能看到漂亮的表格渲染,而 print(df) 输出的是纯文本。

写入数据:to_csv

处理完的数据要存下来交给别人用,就是 to_csv:

df.to_csv('data/sales_01.csv', index=False)

关键是 index=False。我一开始没加这个参数,打开生成的文件发现最左边多了一列 0,1,2,3... 的行号,第二次读这个文件时它就变成了一个莫名其妙的"无名列"。加上 index=False 就干净了。

相关推荐
2501_937860941 小时前
HTTP/HTTPS 学习笔记(中):报头、Cookie、状态码与请求构造
学习·http·https
zh路西法1 小时前
【离策略强化学习】DDPG、TD3 与 SAC:核心公式推导与源码解析
python·强化学习·ddpg·td3·sb3·off-policy·sac
秋秋小事1 小时前
python 数据契约层FastAPI+Pydantic(一)
python
AIFQuant1 小时前
Python港股实时行情API接入:恒生股票数据获取与AH股溢价监控实战
开发语言·数据库·python·金融·实时数据api
朝阳资本论1 小时前
小马智行杀入伦敦牵手Uber,中国Robotaxi出海怎么打?
python
外收内放2 小时前
Python基础语法练习题(70)
开发语言·python
老唐7772 小时前
Agent 开发入门教程:从零搭建一个 Python AI Agent
人工智能·python·深度学习·langchain·大模型·agent·智能体
学linux的QQ蛋2 小时前
sys文件系统与misc文件系统学习小总结
linux·学习·驱动
宿州派大星4 小时前
Python实战:PyQt5 + OpenCV + Dlib 打造AI桌面应用
人工智能·python·qt