Python 数据分析入门|01 Pandas 基础:1 行代码读取 Excel/Csv文件
学习python数据分析之前, 如果你已经搞懂了Python 基础语法,那么现在就可以进入数据分析的“核心环节”——和真实数据打交道!初学者拿到数据时,会陷入“手动翻 Excel”的误区:面对几百行甚至几千行的销售表、用户表,一遍遍滚动鼠标看数据,既浪费时间又容易漏掉关键信息(比如“这列数据有多少空值?”“销量最高是多少?”)。
其实用 Pandas 库,1 行代码就能加载 Excel/Csv 数据,再用 3 个简单方法,5 分钟内就能把数据的“家底”摸得清清楚楚。今天这篇就带大家入门 Pandas:从“读数据”到“快速分析数据概况”,全程附超市销售数据实战,跟着敲代码就能上手。
先搞懂:为什么数据分析一定要用 Pandas?
初学者可能会问:“我用 Excel 也能看数据,为什么要学 Pandas?”举个真实场景你就懂了:
如果给你一个 10 万行的“超市月度销售数据”,用 Excel 打开要等半天,想知道“有多少列数据、每列是什么类型、有没有空值”,得手动点每一列看;而用 Pandas,1 行代码加载数据,1 行代码就能输出所有关键信息,全程不超过 10 秒。
Pandas 本质是 Python 的“数据处理神器”,专门解决数据分析的“第一个痛点”——高效加载和查看数据,它的核心优势对新手特别友好:
- ✅ 1 行代码读取 Excel/Csv/数据库等几乎所有格式的数据;
- ✅ 自带“快速探查”工具,不用写复杂逻辑就能了解数据结构;
- ✅ 处理大数据不卡顿(比 Excel 快 10 倍以上);
- ✅ 后续数据清洗、筛选、统计都能无缝衔接。
简单说:学会 Pandas 读数据+查概况,就等于跨进了数据分析的“大门”。
第一步:准备工作
1. 检查/安装 Pandas
默认已经安装python环境和pycharm环境,并已经安装pandas模块,输入 import pandas as pd 并运行,没报错就说明有 Pandas.
2. 准备实战数据(超市销售数据)
为了让初学者有真实的操作感,我们用“超市销售数据”作为案例,数据包含 5 列关键信息(模拟真实场景):
| 日期 | 商品类别 | 商品名称 | 销量(件) | 销售额(元) |
|---|---|---|---|---|
| 2026-01-01 | 食品 | 面包 | 50 | 250 |
| 2026-01-01 | 饮料 | 可乐 | 30 | 90 |
| 2026-01-02 | 日用品 | 纸巾 | 20 | 60 |
怎么获取这个数据? 两种方式任选:
- 方式 1:手动新建 Excel 文件(命名为
超市销售数据.xlsx),把上面的示例数据输进去,再补几行自己编的数据(比如再加 10 行,包含“零食”“水果”等类别); - 方式 2:用代码自动生成,在 pycharm 里运行下面的代码,会自动生成
超市销售数据.xlsx
import 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执行文件放在同一目录.
核心操作 1:1 行代码读取 Excel/Csv 数据
Pandas 读数据的核心函数是 read_excel()(读 Excel)和 read_csv()(读 Csv),刚开始学习不用记太多参数,先掌握“最常用 3 个参数”,就能应对 90% 的场景。
1. 读取 Excel 文件,最常用。
用 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 展开。
3 个常用参数(解决 80% 问题)
实际工作中,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())
2. 读取 Csv 文件(数据分析另一种常用格式)
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")
核心操作 2:3 个方法,让你看懂数据概况
数据读进来后,最该做的不是马上分析,而是“先摸清数据的家底”——比如有多少行多少列?有没有空值?数值型数据的范围是多少?Pandas 用 3 个方法就能搞定,全程不用写复杂逻辑。
方法 1: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 的行号); - 第一行是“列名”(日期、商品类别、销量等);
- 从内容能快速判断:这是一个按日期记录的销售数据,包含类别、商品、销量、金额。
方法 2: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 # 占用内存大小
该关注什么?
- 缺失值:比如“销售额(元)”只有 19 个非空值,说明有 1 个空值(20-19=1),后续需要处理,数据清洗时处理;
- 数据类型是否正确:比如“日期”列如果显示
object(文本类型),而不是datetime64,说明读数据时没识别成日期,后续需要转换; - 列名是否清晰:如果列名是“Unnamed: 0”“列1”这种乱码,说明 Excel 表头有问题,需要重新指定表头(用
header参数,比如read_excel(..., header=1)表示用第 2 行做表头)。
方法 3: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),需要后续检查; - 平均值和中位数(50%)的差距:如果平均值远大于中位数,说明数据有“极端大值”(比如有一笔销售额 10000 元,拉高了平均值);
- 数据波动:标准差(
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
从结果里得出什么结论?
- 数据规模:20 行 5 列,属于小数据集,后续处理起来很方便;
- 数据质量:只有“销售额”有 1 个缺失值,整体质量较好,后续只需简单清洗;
- 业务信息:食品类商品销量最高(6 次),水果类最少(2 次);平均每次销量 52.65 件,没有极端异常值。
避坑指南:最常见的错误及解决方案
避坑 1:中文乱码(读取后列名或内容显示乱码)
原因:文件编码格式和 Pandas 读取时的编码不匹配(Excel 常用“gbk”或“utf-8”,Csv 同理)。
解决方案:
- 读 Excel 时加
encoding参数
df = pd.read_excel("超市销售数据.xlsx", encoding="gbk") # 先试gbk
# 如果gbk不行,试utf-8:
# df = pd.read_excel("超市销售数据.xlsx", encoding="utf-8")
- 读 Csv 时同理:
df = pd.read_csv("超市销售数据.csv", encoding="gbk")
避坑 2:日期列读成文本类型(info()里日期列显示 object)
原因: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_dates3 个常用参数; - 用
head()看数据结构,info()查数据类型和缺失值,describe()分析数值统计; - 用实战数据走通“读数据→分析概况”的完整流程,了解业务信息。
记住:数据分析的第一步永远是“了解数据”,不要拿到数据就直接做统计或画图——先摸清数据的行数、列数、缺失值、异常值,后续的清洗和分析才会少走弯路。
参考文档:https://mp.weixin.qq.com/s/Tr3Kya-vVNrSIp8Olw7xuA

浙公网安备 33010602011771号