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

开篇

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

数据查看的六个方法

还是那份 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 还认标签。

相关推荐
前端精髓9 分钟前
langchain 短期记忆(状态)动态运行时上下文
python·langchain
程序猿乐锅14 分钟前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
最强小杰1 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
DeepVisionary1 小时前
为拿并网许可,OpenAI在佐治亚新园区同意高峰期断电三成
python·自动化
赵谨言2 小时前
多语种在线语言学习平台LinguaVerse的设计与实现毕业论文
学习
VIP_CQCRE2 小时前
内容自动化越跑越乱?先补上状态、去重和失败恢复
python·ai·工作流·幂等设计·内容自动化
東隅已逝,桑榆非晚2 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
我喜欢就喜欢2 小时前
RAG 重排序 Rerank 实战:用 bge-reranker 把 Top-K 命中率拉回来
python·大模型·向量检索·rag·rerank
专注仿真3 小时前
卷积神经网络(CNN)算法详解
人工智能·python·算法·代码·大模型训练