数据分析(数据查询与选择)

开篇

上一篇的数据存成了文件,这一篇的问题是:数据读进来了,可它长什么样、有几行几列、哪列是数字、哪列有空值,我完全不知道。这一篇我整理了一套拿到新数据后的固定"体检动作"。

数据查看的六个方法

还是那份 sales.csv:

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

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

看开头结尾:df1.head(10) 看前 10 行,df1.tail(10) 看后 10 行。不传参数默认是 5 行。这是最快确认"列名对不对、数据有没有错位"的办法。

看统计概览:df1.describe() 会输出一张统计表,只针对数字列,给出行数、均值、标准差、最小值、四分位数、最大值。我一般靠它一眼看出异常,比如"单价"列如果 min 是 0 或者 max 大得离谱,就说明数据有问题。

看整体信息:df1.info() 是我认为最有价值的一个,它同时列出列名、每列的非空值数量、数据类型、内存占用。非空数量和总行数一减,就是每列缺了多少数据。

这里有个小坑:info() 本身就是直接打印到屏幕的,如果你写成 print(df1.info()),会先输出正常信息,最后再多冒出一个 None。我在笔记里专门给这行加了注释提醒下次的自己。

看形状和列名:df1.shape 返回 (行数, 列数),df1.columns 返回列名索引。这两个是我在写后续代码前一定会确认的。

数据选择:先选列,再选行

选单列用一个方括号,得到的是 Series:

var1 = df2'产品名称'

选多列要用两个方括号(外面那层是"传一个列表"):

var2 = df2\['产品名称', '单价']

我一开始写成 df2'产品名称', '单价' 直接报错。记住规律:单列 → Series,多列 → 还是 DataFrame,方括号套列表的本质是"我给了你一个列名清单"。

选行用 loc 和 iloc。我的笔记里给自己解释过"什么是行号":行号是从 0 开始的整数,第一行是 0,第二行是 1,而且行号不能改;而上一篇用 index= 自定义的 a、b、c 那种是"索引标签"。

var3 = df2.loc0 # 单行

var4 = df2.loc0:5 # 多行

选行这块是我目前最容易晕的地方,所以先记两条结论顶用:切片 0:5 包含结尾的 5(这点和 Python 原生列表不一样,原生是取到 4);纯数字行号场景下 loc 和 iloc 表现接近,但 iloc 只认位置、loc 还认标签。

相关推荐
衡石科技1 小时前
从语义准备到模型验收:HENGSHI SENSE Data Agent 的 RAG 与部署工程实践
java·大数据·人工智能·数据分析·rag
林澈在路上1 小时前
哪个写歌软件可以用自己声音?MELO音乐详解
人工智能·python·算法
MIXLLRED1 小时前
Batch Normalization 学习笔记:γ、β 与 γ>0 的关键限制
笔记·学习·batch
2501_937860941 小时前
HTTP/HTTPS 学习笔记(中):报头、Cookie、状态码与请求构造
学习·http·https
外收内放1 小时前
数据分析(数据读取与写入)
python·学习·数据分析
zh路西法1 小时前
【离策略强化学习】DDPG、TD3 与 SAC:核心公式推导与源码解析
python·强化学习·ddpg·td3·sb3·off-policy·sac
秋秋小事1 小时前
python 数据契约层FastAPI+Pydantic(一)
python
AIFQuant1 小时前
Python港股实时行情API接入:恒生股票数据获取与AH股溢价监控实战
开发语言·数据库·python·金融·实时数据api
朝阳资本论2 小时前
小马智行杀入伦敦牵手Uber,中国Robotaxi出海怎么打?
python