Pandas 入门教程:用 Python 开启你的数据科学之旅
在数据科学、机器学习和数据分析领域,Python 语言已经成为不可或缺的工具。而在 Python 的众多库中,Pandas 无疑是处理表格数据(structured data)的王者。无论你是数据分析新手,还是希望从 Excel 转向代码驱动分析的职场人士,掌握 Pandas 都将是你的必备技能。
本文将带你从零开始,一步步了解 Pandas 的核心概念,并学会如何使用它来执行基本的数据操作。
1. 什么是 Pandas?为什么选择它?
Pandas 是一个开源的 Python 库,构建在另一个强大的库 NumPy 之上。它的名字来源于“Panel Data”(面板数据),是经济学中用于多维度结构化数据集的术语。
为什么 Pandas 如此受欢迎?
- 强大的数据结构:Pandas 提供了两种核心数据结构——
Series(一维)和DataFrame(二维),它们可以高效地处理不同类型的数据。 - 轻松读写数据:可以轻松地从各种格式的文件中读取数据,如 CSV、Excel、JSON、SQL 数据库等,并将处理后的数据写回。
- 便捷的数据清洗和预处理:处理缺失值、重复值,进行数据类型转换等操作都变得非常简单。
- 灵活的数据筛选与查询:提供了强大且直观的方式来选择、切片和过滤数据。
- 高性能:底层代码(主要是 C 和 Cython)经过高度优化,确保了数据处理的高速度。
简单来说,如果你需要用 Python 来处理任何与电子表格或数据库表格类似的数据,Pandas 就是你的最佳选择。
2. 安装 Pandas
在开始之前,请确保你已经安装了 Python。然后,打开你的终端或命令行工具,输入以下命令即可安装 Pandas:
bash
pip install pandas
如果你在使用 Anaconda 环境,Pandas 通常已经预装好了。
3. Pandas 的核心:Series 与 DataFrame
理解 Series 和 DataFrame 是学习 Pandas 的关键。
Series:一维数据结构
Series 就像一个带标签的一维数组。你可以把它想象成电子表格中的一列。
“`python
import pandas as pd
创建一个简单的 Series
s = pd.Series([10, 20, 30, 40, 50], name=”Numbers”)
print(s)
“`
输出:
0 10
1 20
2 30
3 40
4 50
Name: Numbers, dtype: int64
左边的是索引 (Index),右边的是值 (Values)。
DataFrame:二维数据结构
DataFrame 是 Pandas 的核心,它是一个二维的、带标签的数据结构,就像一个完整的电子表格或 SQL 表。它有行和列,每一列都可以是不同的数据类型。
你可以把 DataFrame 看作是由多个 Series 组成的字典。
“`python
import pandas as pd
使用字典创建一个 DataFrame
data = {
‘Name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘David’],
‘Age’: [25, 30, 35, 40],
‘City’: [‘New York’, ‘Paris’, ‘London’, ‘Tokyo’]
}
df = pd.DataFrame(data)
print(df)
“`
输出:
Name Age City
0 Alice 25 New York
1 Bob 30 Paris
2 Charlie 35 London
3 David 40 Tokyo
4. 读取和写入数据
在真实世界中,数据通常存储在文件中。read_csv 是最常用的函数之一。
假设我们有一个名为 employees.csv 的文件,内容如下:
csv
ID,Name,Department,Salary
1,John Doe,HR,50000
2,Jane Smith,IT,75000
3,Peter Jones,Marketing,60000
4,Mary Brown,IT,80000
我们可以这样读取它:
“`python
import pandas as pd
从 CSV 文件读取数据
df_employees = pd.read_csv(’employees.csv’)
将 DataFrame 写入新的 CSV 文件,不包含索引
df_employees.to_csv(’employees_new.csv’, index=False)
“`
5. 探索你的数据
加载数据后,第一步通常是快速了解它的基本信息。
“`python
查看前 5 行数据
print(df_employees.head())
查看后 5 行数据
print(df_employees.tail())
获取 DataFrame 的基本信息(数据类型、非空值数量等)
print(df_employees.info())
获取数值列的描述性统计信息(计数、平均值、标准差、最小值、最大值等)
print(df_employees.describe())
“`
head() 的输出:
ID Name Department Salary
0 1 John Doe HR 50000
1 2 Jane Smith IT 75000
2 3 Peter Jones Marketing 60000
3 4 Mary Brown IT 80000
info() 的输出:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ID 4 non-null int64
1 Name 4 non-null object
2 Department 4 non-null object
3 Salary 4 non-null int64
dtypes: int64(2), object(2)
memory usage: 256.0+ bytes
6. 数据选择与过滤
Pandas 提供了非常灵活的方式来选择数据的特定部分。
选择列
“`python
选择单列,返回一个 Series
departments = df_employees[‘Department’]
print(departments)
选择多列,返回一个新的 DataFrame
subset = df_employees[[‘Name’, ‘Salary’]]
print(subset)
“`
选择行:loc 与 iloc
loc:基于标签 (label) 进行选择。iloc:基于整数位置 (integer position) 进行选择。
“`python
loc: 选择索引为 1 的行
print(df_employees.loc[1])
iloc: 选择第 2 行(索引从 0 开始)
print(df_employees.iloc[1])
使用 loc 进行条件过滤:选择 IT 部门的所有员工
it_employees = df_employees.loc[df_employees[‘Department’] == ‘IT’]
print(it_employees)
复杂条件:选择工资大于 60000 的 IT 部门员工
high_salary_it = df_employees.loc[(df_employees[‘Department’] == ‘IT’) & (df_employees[‘Salary’] > 70000)]
print(high_salary_it)
“`
7. 添加与删除列
数据处理过程中,经常需要创建新列或删除不再需要的列。
“`python
添加一个新列 ‘Salary_USD’ (假设汇率为 0.14)
df_employees[‘Salary_USD’] = df_employees[‘Salary’] * 0.14
print(df_employees)
删除 ‘ID’ 列
axis=1 表示删除列,inplace=True 表示在原始 DataFrame 上修改
df_employees.drop(‘ID’, axis=1, inplace=True)
print(df_employees)
“`
8. 结语
恭喜你!你已经完成了 Pandas 的入门第一步。通过本文,你学会了:
– Pandas 的核心数据结构 Series 和 DataFrame。
– 如何读取 CSV 文件并对数据进行初步探索。
– 如何使用 loc 和 iloc 灵活地筛选和查询数据。
– 如何添加和删除列。
这只是冰山一角。Pandas 还拥有处理缺失数据、分组聚合 (groupby)、合并与连接 (merge, join)、时间序列分析等更多强大的功能。
数据科学的旅程漫长而有趣,而 Pandas 将是你在这条路上最可靠的伙伴之一。不断练习,挑战真实的数据集,你将很快成为一名数据处理高手。