# pandas,一个效率翻倍的 Python 库!
很多小伙伴刚开始接触数据处理时,都习惯用Excel一点点整理、筛选、计算,数据量一大不仅卡顿,还很容易出错。我当初也是这么过来的,直到遇到了pandas——Python里专门做数据处理的神器,批量处理表格数据的效率能直接翻倍。今天我就从零基础视角,带大家吃透pandas的核心用法,看完就能上手处理日常数据。
## 一、安装与导入:一分钟开启数据处理之旅
pandas不是Python自带的标准库,我们需要先手动安装。我推荐大家直接用pip安装,打开命令行输入一行命令就行:
```python
# 安装pandas
pip install pandas
安装完成后,在代码里导入它即可。行业里有个通用惯例,会给pandas起个别名pd,这样后面写代码时能少打很多字,我自己平时也一直这么用:
# 导入pandas并起别名
import pandas as pd
小贴士:如果安装速度慢,可以加上国内镜像源,比如pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple,下载速度会快很多。
二、核心数据结构:认识 Series 和 DataFrame
pandas里有两个最核心的“数据容器”,就像我们平时用的收纳盒,一个装一维数据,一个装二维数据,把它们搞懂了,后面学起来就顺了。
2.1 Series:带标签的“一维列表”
Series可以理解成“带索引的列表”,类似Excel里的一列数据,每个数值都对应一个标签(索引)。我们可以直接用列表来创建一个Series:
# 创建一个存储员工工龄的Series
work_years = pd.Series([2, 5, 1, 3, 4], name="工龄")
print(work_years)
运行后你会看到,左边是从0开始的索引,右边是对应的工龄数值,最下面还会显示数据类型。和普通列表比起来,Series能通过索引快速定位数据,还能直接做批量计算,非常方便。
2.2 DataFrame:你的“可编程Excel表格”
DataFrame是我们平时用得最多的结构,它是二维的,有行有列,完完全全就是一张Excel表格的样子。我们可以用字典来创建一个DataFrame,字典的键就是列名,值就是每一列的数据:
# 创建员工信息DataFrame
data = {
"姓名": ["张三", "李四", "王五", "赵六", "孙七"],
"部门": ["技术部", "市场部", "技术部", "人事部", "市场部"],
"月薪": [8000, 7500, 9500, 6800, 8200],
"工龄": [2, 5, 1, 3, 4]
}
df = pd.DataFrame(data)
print(df)
运行之后就能看到一张整齐的表格,左边是行索引,上面是列名,中间是数据。我们后续的所有筛选、计算操作,基本都是在DataFrame上完成的。
三、数据读写:一键读取表格文件,告别手动录入
现实里我们的数据大多存在CSV或者Excel文件里,pandas可以直接读取这些文件,不用手动复制粘贴,几百几千行的数据一秒就能读进来。
最常用的是读取CSV文件,用pd.read_csv()方法,括号里填文件路径就行:
# 读取CSV文件(实际使用替换成你的文件路径)
# df = pd.read_csv("员工信息.csv")
# 读取Excel文件需要额外安装openpyxl库
# pip install openpyxl
# df = pd.read_excel("员工信息.xlsx")
读取完数据后,我们先别急着处理,先快速查看一下数据概况,我常用这几个方法:
# 查看前5行数据,快速了解数据长什么样
print(df.head())
# 查看数据的行数和列数,返回(行数, 列数)
print("数据维度:", df.shape)
# 查看所有列名
print("列名:", df.columns.tolist())
# 查看数值列的统计信息(平均值、最大值、最小值等)
print(df.describe())
小贴士:新手很容易踩“文件路径写错”的坑。如果文件和你的代码在同一个文件夹里,直接写文件名就行;如果不在,就要写完整的绝对路径,比如"C:/数据/员工信息.csv"。
四、3个高频操作,让数据处理效率翻倍
我平时处理数据的时候,有三个操作几乎天天都用到,学会它们,80%的日常数据处理需求都能搞定,效率比手动操作Excel高太多。
4.1 条件筛选:快速找出目标数据
比如我们想找出所有月薪大于8000的员工,在Excel里还要点筛选、选条件,在pandas里一行代码就搞定:
# 筛选月薪大于8000的员工
high_salary = df[df["月薪"] > 8000]
print(high_salary)
原理其实很简单:df["月薪"] > 8000会给每一行做判断,符合条件的返回True,不符合的返回False,最后我们只把结果为True的行保留下来。我们还可以叠加多个条件,比如筛选技术部且月薪大于8000的员工:
# 多条件筛选:技术部 + 月薪大于8000
tech_high = df[(df["部门"] == "技术部") & (df["月薪"] > 8000)]
print(tech_high)
注意:多个条件之间要用&(且)或者|(或)连接,每个条件都要用括号括起来,不然会报错哦。
4.2 新增计算列:批量计算一键完成
比如我们要给每位员工计算年终奖,假设年终奖是月薪的2倍,我们不需要一行行算,直接给DataFrame新增一列就行:
# 新增“年终奖”列
df["年终奖"] = df["月薪"] * 2
print(df)
运行后你会发现,表格最后直接多了一列年终奖,所有数据一次性算完了。哪怕有几万行数据,也是瞬间完成,比Excel下拉公式快得多。
4.3 缺失值处理:快速补齐数据漏洞
实际工作里的数据经常不完整,会有空值。pandas里处理缺失值非常方便,两个方法就能搞定:
# 查看每一列有多少个缺失值
print(df.isnull().sum())
# 把缺失的部门信息填充为“待定”
df["部门"] = df["部门"].fillna("待定")
# 直接删除有缺失值的行(慎用,会丢失数据)
# df = df.dropna()
我一般更推荐用填充的方式处理缺失值,除非缺失的数据特别少,不然不要随便删除行,容易丢失关键信息。
五、动手练一练:完整走一遍数据处理流程
学到这里,我们来做个小练习,把刚才的知识点串起来:有一份员工数据,请你筛选出市场部的员工,给他们新增“涨薪后月薪”列(涨薪10%),并查看最终结果。
参考代码:
import pandas as pd
data = {
"姓名": ["张三", "李四", "王五", "赵六", "孙七"],
"部门": ["技术部", "市场部", "技术部", "人事部", "市场部"],
"月薪": [8000, 7500, 9500, 6800, 8200],
"工龄": [2, 5, 1, 3, 4]
}
df = pd.DataFrame(data)
# 1. 筛选市场部员工
market_df = df[df["部门"] == "市场部"]
# 2. 新增涨薪后月薪
market_df["涨薪后月薪"] = market_df["月薪"] * 1.1
# 3. 查看结果
print(market_df)
大家可以自己动手敲一遍,看看运行结果是不是和你想的一样。
今天我们从安装导入开始,认识了pandas的两个核心数据结构,学会了读取数据、条件筛选、新增计算列和处理缺失值,这些都是日常数据处理里最实用的技能。pandas的功能远不止这些,后续我还会给大家分享更多进阶技巧。
小伙伴们,今天的Python学习之旅就到这里啦!祝大家学习愉快,Python学习节节高!