


























学习python数据分析之前, 如果你已经搞懂了Python 基础语法,那么现在就可以进入数据分析的“核心环节”——和真实数据打交道!初学者拿到数据时,会陷入“手动翻 Excel”的误区:面对几百行甚至几千行的销售表、用户表,一遍遍滚动鼠标看数据,既浪费时间又容易漏掉关键信息(比如“这列数据有多少空值?”“销量最高是多少?”)。
其实用 Pandas 库,1 行代码就能加载 Excel/Csv 数据,再用 3 个简单方法,5 分钟内就能把数据的“家底”摸得清清楚楚。今天这篇就带大家入门 Pandas:从“读数据”到“快速分析数据概况”,全程附超市销售数据实战,跟着敲代码就能上手。
初学者可能会问:“我用 Excel 也能看数据,为什么要学 Pandas?”举个真实场景你就懂了:
如果给你一个 10 万行的“超市月度销售数据”,用 Excel 打开要等半天,想知道“有多少列数据、每列是什么类型、有没有空值”,得手动点每一列看;而用 Pandas,1 行代码加载数据,1 行代码就能输出所有关键信息,全程不超过 10 秒。
Pandas 本质是 Python 的“数据处理神器”,专门解决数据分析的“第一个痛点”——高效加载和查看数据,它的核心优势对新手特别友好:
简单说:学会 Pandas 读数据+查概况,就等于跨进了数据分析的“大门”。
默认已经安装python环境和pycharm环境,并已经安装pandas模块,输入 import pandas as pd 并运行,没报错就说明有 Pandas.
为了让初学者有真实的操作感,我们用“超市销售数据”作为案例,数据包含 5 列关键信息(模拟真实场景):
| 日期 | 商品类别 | 商品名称 | 销量(件) | 销售额(元) |
|---|---|---|---|---|
| 2026-01-01 | 食品 | 面包 | 50 | 250 |
| 2026-01-01 | 饮料 | 可乐 | 30 | 90 |
| 2026-01-02 | 日用品 | 纸巾 | 20 | 60 |
怎么获取这个数据? 两种方式任选:
超市销售数据.xlsx),把上面的示例数据输进去,再补几行自己编的数据(比如再加 10 行,包含“零食”“水果”等类别);超市销售数据.xlsximport pandas as pd import numpy as np # 自动生成 20 行超市销售数据 data = { "日期": pd.date_range(start="2026-01-01", periods=20, freq="D"), # 1月1日起20天 "商品类别": np.random.choice(["食品", "饮料", "日用品", "零食", "水果"], 20), # 随机选类别 "商品名称": np.random.choice(["面包", "可乐", "纸巾", "薯片", "苹果"], 20), # 随机选商品 "销量(件)": np.random.randint(10, 100, 20), # 销量10-100之间随机 "销售额(元)": np.random.randint(30, 500, 20) # 销售额30-500之间随机 } # 生成Excel文件 df = pd.DataFrame(data) df.to_excel("超市销售数据.xlsx", index=False) # index=False 表示不保存行号 print("数据文件已生成:超市销售数据.xlsx")
关键提醒:文件路径别搞错,把 Excel 文件和python执行文件放在同一目录.
Pandas 读数据的核心函数是 read_excel()(读 Excel)和 read_csv()(读 Csv),刚开始学习不用记太多参数,先掌握“最常用 3 个参数”,就能应对 90% 的场景。
用 pd.read_excel() 函数,基础用法只有 1 行代码:
# 导入Pandas库,习惯简写成pd
import pandas as pd
# 1行代码读取Excel文件(文件和Notebook在同一文件夹)
df = pd.read_excel("超市销售数据.xlsx")
# 打印“数据框”类型(df是Pandas的核心对象,叫DataFrame,类似Excel表格)
print("数据类型:", type(df)) # 输出:<class 'pandas.core.frame.DataFrame'>
print("数据加载完成!")
运行后如果没报错,就说明数据读成功了!这里的 df 是 Pandas 的“数据框”(DataFrame),可以理解为“Python 里的 Excel 表格”,后续所有操作都围绕 df 展开。
实际工作中,Excel 文件可能有“多个 sheet”“表头不在第一行”“中文乱码”等问题,这时候加参数就能解决:
| 参数名 | 作用 | 示例 |
|---|---|---|
sheet_name |
指定读取哪个 sheet(默认读第一个) | pd.read_excel("数据.xlsx", sheet_name="1月销售") |
skiprows |
跳过前 N 行(比如跳过表头前的说明行) | pd.read_excel("数据.xlsx", skiprows=2)(跳过前2行) |
encoding |
解决中文乱码(Excel 常用"utf-8"或"gbk") | pd.read_excel("数据.xlsx", encoding="gbk") |
示例:读指定 sheet 的数据
如果你的 Excel 里有两个 sheet(“1月销售”和“2月销售”),想读“2月销售”:
df_feb = pd.read_excel("超市销售数据.xlsx", sheet_name="2月销售")
print("2月销售数据前5行:")
print(df_feb.head())
Csv 文件比 Excel 更小、加载更快,很多公开数据集(比如 Kaggle 上的)都是 Csv 格式,用 pd.read_csv() 读取,用法和 Excel 类似:
# 1行代码读Csv文件(如果没有Csv文件,可先把Excel另存为Csv) df_csv = pd.read_csv("超市销售数据.csv") # 解决Csv中文乱码:加encoding参数 df_csv = pd.read_csv("超市销售数据.csv", encoding="utf-8") # 大多数情况用utf-8 # 如果utf-8不行,换gbk: # df_csv = pd.read_csv("超市销售数据.csv", encoding="gbk")
数据读进来后,最该做的不是马上分析,而是“先摸清数据的家底”——比如有多少行多少列?有没有空值?数值型数据的范围是多少?Pandas 用 3 个方法就能搞定,全程不用写复杂逻辑。
df.head() —— 看前几行数据,快速了解结构如果数据有 10 万行,直接打印所有数据会卡死,head() 默认显示前 5 行,让你快速知道“数据有哪些列、每列是什么内容”。
# 1. 默认显示前5行,以我们的超市数据为例.
print("数据前5行(默认):")
print(df.head())
#######################################
数据前5行(默认):
日期 商品类别 商品名称 销量(件) 销售额(元)
0 2026-01-01 零食 薯片 90 471
1 2026-01-02 食品 可乐 31 161
2 2026-01-03 日用品 可乐 28 155
3 2026-01-04 零食 面包 62 498
4 2026-01-05 零食 可乐 62 405
0、1、2、3、4 是“行索引”(类似 Excel 的行号);df.info() —— 看数据类型和缺失值,排查“脏数据”info() 是数据分析的“排雷工具”,能告诉你:
RangeIndex)、多少列(Data columns);dtype):比如日期是 datetime64、文本是 object、数值是 int64;Non-Null Count):如果非空值数 < 总行数,说明有缺失值。print("数据概况(info()):") print(df.info()) ############################## 运行结果解读: 数据概况(info()): <class 'pandas.core.frame.DataFrame'> RangeIndex: 20 entries, 0 to 19 # 共20行数据(索引0到19) Data columns (total 5 columns): # 共5列 # Column Non-Null Count Dtype --- ------ -------------- ----- 0 日期 20 non-null datetime64[ns] # 日期列:20个非空值,类型是日期 1 商品类别 20 non-null object # 商品类别:20个非空值,类型是文本 2 商品名称 20 non-null object # 商品名称:20个非空值,类型是文本 3 销量(件) 20 non-null int64 # 销量:20个非空值,类型是整数 4 销售额(元) 19 non-null int64 # 销售额:19个非空值(有1个缺失值),类型是浮点数 dtypes: datetime64[ns](1), int64(2), object(2) memory usage: 932.0+ bytes # 占用内存大小
object(文本类型),而不是 datetime64,说明读数据时没识别成日期,后续需要转换;header 参数,比如 read_excel(..., header=1) 表示用第 2 行做表头)。df.describe() —— 看数值型数据的统计指标,找异常值describe() 会自动计算所有数值型列(比如销量、销售额)的关键统计量,帮你快速判断“数据有没有异常”(比如销量突然出现 1000 件,可能是录入错误)。
print("数值型数据统计(describe()):") print(df.describe()) ############################# 销量(件) 销售额(元) count 20.000000 19.000000 # 有效数据个数(销量20个,销售额19个) mean 52.650000 228.421053 # 平均值(平均销量52.65件,平均销售额228.42元) std 25.324567 125.689741 # 标准差(数值越大,数据波动越大) min 15.000000 45.000000 # 最小值(最低销量15件,最低销售额45元) 25% 32.500000 120.000000 # 25分位数(25%的数据低于这个值) 50% 51.500000 210.000000 # 50分位数(中位数,一半数据低于这个值) 75% 73.750000 320.000000 # 75分位数(75%的数据低于这个值) max 98.000000 480.000000 # 最大值(最高销量98件,最高销售额480元)
max 是 1000,而平均值只有 52,说明可能有异常值(比如多输了一个 0),需要后续检查;std)越大,说明数据波动越大(比如销量标准差 25,说明销量在 52±25 之间波动,属于正常范围)。现在把前面的内容串起来,用我们的超市销售数据做
# 1. 导入Pandas库
import pandas as pd
# 2. 读取Excel数据
# 这里假设Excel只有一个sheet,没有中文乱码
df = pd.read_excel("超市销售数据.xlsx")
print("✅ 超市销售数据加载完成!")
# 3. 用head()看前5行,了解数据结构
print("\n===== 1. 数据前5行(head()) =====")
print(df.head())
# 4. 用info()看数据类型和缺失值
print("\n===== 2. 数据概况(info()) =====")
print(df.info())
# 从info()发现:销售额(元)有1个缺失值,日期列是datetime类型(正常)
# 5. 用describe()看数值型数据统计
print("\n===== 3. 数值型数据统计(describe()) =====")
print(df.describe())
# 从describe()发现:销量最高98件,最低15件,平均52.65件;销售额最高480元,最低45元
# 6. 额外小技巧:看有多少种商品类别(用value_counts())
print("\n===== 4. 商品类别分布 =====")
category_count = df["商品类别"].value_counts() # 统计每个类别的出现
✅ 超市销售数据加载完成!
===== 1. 数据前5行(head()) =====
日期 商品类别 商品名称 销量(件) 销售额(元)
0 2026-01-01 食品 面包 50 250.0
1 2026-01-02 饮料 可乐 30 90.0
2 2026-01-03 日用品 纸巾 20 60.0
3 2026-01-04 零食 薯片 45 180.0
4 2026-01-05 水果 苹果 60 300.0
===== 2. 数据概况(info()) =====
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20 entries, 0 to 19
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 日期 20 non-null datetime64[ns]
1 商品类别 20 non-null object
2 商品名称 20 non-null object
3 销量(件) 20 non-null int64
4 销售额(元) 19 non-null float64
dtypes: datetime64[ns](1), float64(1), int64(1), object(2)
memory usage: 928.0+ bytes
===== 3. 数值型数据统计(describe()) =====
销量(件) 销售额(元)
count 20.000000 19.000000
mean 52.650000 228.421053
std 25.324567 125.689741
min 15.000000 45.000000
25% 32.500000 120.000000
50% 51.500000 210.000000
75% 73.750000 320.000000
max 98.000000 480.000000
===== 4. 商品类别分布 =====
商品类别
食品 6
饮料 5
日用品 4
零食 3
水果 2
Name: count, dtype: int64
原因:文件编码格式和 Pandas 读取时的编码不匹配(Excel 常用“gbk”或“utf-8”,Csv 同理)。
解决方案:
encoding 参数df = pd.read_excel("超市销售数据.xlsx", encoding="gbk") # 先试gbk
# 如果gbk不行,试utf-8:
# df = pd.read_excel("超市销售数据.xlsx", encoding="utf-8")
df = pd.read_csv("超市销售数据.csv", encoding="gbk")
原因:Pandas 没自动识别日期格式(比如日期是“2026/01/01”或“01-01-2026”,格式不标准)。
解决方案:
parse_dates 参数,指定哪一列是日期:# parse_dates=["日期"] 表示把“日期”列解析成日期类型
df = pd.read_excel("超市销售数据.xlsx", parse_dates=["日期"])
pd.to_datetime() 转换:# 把“日期”列从文本转成日期类型 df["日期"] = pd.to_datetime(df["日期"])
这篇我们学会了 Pandas 的核心入门操作:
read_excel()/read_csv() 1 行代码读取数据,掌握 sheet_name/encoding/parse_dates 3 个常用参数;head() 看数据结构,info() 查数据类型和缺失值,describe() 分析数值统计;记住:数据分析的第一步永远是“了解数据”,不要拿到数据就直接做统计或画图——先摸清数据的行数、列数、缺失值、异常值,后续的清洗和分析才会少走弯路。
参考文档:https://mp.weixin.qq.com/s/Tr3Kya-vVNrSIp8Olw7xuA
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。