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

开篇

上一篇是用手工数据造表,这一篇我直接用了一份 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 就干净了。

相关推荐
Ramble_Naylor1 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
yyyang882 小时前
蓝牙系统整体架构详解
学习·信息与通信
Allen_LVyingbo2 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang2 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
Linux-lucky2 小时前
46-Linux学习之旅之LVS负载均衡与keepalived高可用
linux·运维·学习·ubuntu·负载均衡·lvs
我命由我123453 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂3 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
SelectDB4 小时前
Apache Doris 与 SelectDB 是什么关系?从开源技术到面向 Agent 的极速分析数据库
大数据·数据库·数据分析
atwednesday4 小时前
一文理解python中的task,协程,woker
python
金色光环4 小时前
【DSP学习】C2000_ADC中断_笔记
笔记·学习