【Python】你不得不知道的 Python 数据分析神器:Pandas 库
在数据科学中,数据清理是一个极其重要的环节。为了能够更好的处理和分析数据,我们需要将原始数据进行清洗和整理。Pandas 库是一个高效的 Python 数据分析工具,为数据清洗和整理提供了强大的支持。
Pandas 库提供了两种主要的数据结构:Series 和 DataFrame。一个 Series 对象是由一列数据和对应的索引组成的。而一个 DataFrame 则是由多个 Series 对象以列的形式组成的。同时,Pandas 库也提供了许多用于数据清洗的方法和函数。下面让我们来看看一些例子。
创建一个 DataFrame
在 Pandas 中,可以使用 DataFrame() 函数来创建一个 DataFrame。比如,我们可以创建一个包含学生姓名、年龄、成绩的 DataFrame。
``` python
import pandas as pd
data = {'name': ['Tom', 'John', 'Marry'], 'age': [20, 21, 19], 'score': [90, 85, 92]}
df = pd.DataFrame(data)
print(df)
```
输出结果为:
```
name age score
0 Tom 20 90
1 John 21 85
2 Marry 19 92
```
读取文件并创建 DataFrame
除了手动创建 DataFrame,我们也可以从文件中读取数据并创建 DataFrame。Pandas 支持读取多种格式的文件,如 CSV、Excel、HTML、SQL 等。下面以 CSV 文件为例进行演示。
假设有一个名为 'students.csv' 的文件,里面包含学生姓名、年龄、成绩等信息。我们可以使用 read_csv() 函数来读取该文件并创建 DataFrame。
``` python
import pandas as pd
df = pd.read_csv('students.csv')
print(df)
```
输出结果为:
```
id name age score
0 1 Tom 20 90
1 2 John 21 85
2 3 Marry 19 92
3 4 Jerry 22 88
```
从 DataFrame 中选取数据
Pandas 提供了多种方式来选取 DataFrame 中的数据。
- 选取某一列数据
``` python
import pandas as pd
df = pd.read_csv('students.csv')
name = df['name']
print(name)
```
输出结果为:
```
0 Tom
1 John
2 Marry
3 Jerry
Name: name, dtype: object
```
- 选取某个单元格的数据
``` python
import pandas as pd
df = pd.read_csv('students.csv')
score = df.loc[1, 'score']
print(score)
```
输出结果为:
```
85
```
- 选取某一行数据
``` python
import pandas as pd
df = pd.read_csv('students.csv')
row = df.loc[1]
print(row)
```
输出结果为:
```
id 2
name John
age 21
score 85
Name: 1, dtype: object
```
数据清洗和整理
Pandas 库提供了许多数据清洗和整理的方法和函数。下面我们将介绍一些常用的方法。
- 缺失值处理
在实际数据中,常常会遇到缺失值的情况。Pandas 中提供了 fillna() 和 dropna() 两个方法来处理缺失值。其中,fillna() 可以将缺失值替换为给定的值,而 dropna() 则可以删除包含缺失值的行或列。
``` python
import pandas as pd
import numpy as np
data = {'name': ['Tom', 'John', 'Marry', 'Jerry'], 'age': [20, np.nan, 19, 22], 'score': [90, 85, np.nan, 88]}
df = pd.DataFrame(data)
print(df)
# 将缺失值替换为 0
df.fillna(value=0, inplace=True)
print(df)
# 删除包含缺失值的行
df.dropna(axis=0, inplace=True)
print(df)
```
输出结果为:
```
name age score
0 Tom 20.0 90.0
1 John NaN 85.0
2 Marry 19.0 NaN
3 Jerry 22.0 88.0
name age score
0 Tom 20.0 90.0
1 John 0.0 85.0
2 Marry 19.0 0.0
3 Jerry 22.0 88.0
name age score
0 Tom 20.0 90.0
3 Jerry 22.0 88.0
```
- 去重
在数据分析中,经常需要去除重复的数据。Pandas 中提供了 drop_duplicates() 方法来去重。
``` python
import pandas as pd
data = {'name': ['Tom', 'John', 'Marry', 'Tom'], 'age': [20, 21, 19, 20], 'score': [90, 85, 92, 90]}
df = pd.DataFrame(data)
print(df)
# 去除重复的行
df.drop_duplicates(inplace=True)
print(df)
```
输出结果为:
```
name age score
0 Tom 20 90
1 John 21 85
2 Marry 19 92
3 Tom 20 90
name age score
0 Tom 20 90
1 John 21 85
2 Marry 19 92
```
- 数据类型转换
在数据分析中,数据类型转换是一个必不可少的环节。Pandas 中提供了 astype() 方法来转换数据类型。
``` python
import pandas as pd
data = {'name': ['Tom', 'John', 'Marry'], 'age': [20, 21, 19], 'score': [90, 85, 92]}
df = pd.DataFrame(data)
print(df)
# 将 age 列的数据类型转换为 float 型
df['age'] = df['age'].astype('float')
print(df)
```
输出结果为:
```
name age score
0 Tom 20 90
1 John 21 85
2 Marry 19 92
name age score
0 Tom 20.0 90
1 John 21.0 85
2 Marry 19.0 92
```
总结
Pandas 库是 Python 中一个非常强大的数据分析工具。它提供了丰富的数据结构和功能,能够轻松地完成数据清洗和整理,从而使数据分析更加高效精准。