数据科学中的NumPy与pandas:从数组到字符串处理
立即解锁
发布时间: 2025-08-29 10:27:53 阅读量: 8 订阅数: 18 AIGC 

# 数据科学中的NumPy与pandas:从数组到字符串处理
## 1. 数据科学中的NumPy与pandas基础
在数据科学领域,高效的数据处理和分析至关重要。NumPy的高性能ndarrays(数组)为数据存储和检索提供了强大的支持,而pandas库则进一步扩展了数据处理的能力,特别是通过Series和DataFrame这两种数据结构。
### 1.1 DataFrame基础
DataFrame是一种增强的二维数组,类似于Series,它可以有自定义的行和列索引,并且支持缺失数据。每个列都是一个Series,不同列可以包含不同类型的元素。
#### 1.1.1 从字典创建DataFrame
可以使用字典来创建DataFrame,字典的键将成为列名,对应的值将成为列中的元素。默认情况下,行索引是从0开始的自动生成的整数。
```python
import pandas as pd
grades_dict = {'Wally': [87, 96, 70], 'Eva': [100, 87, 90],
'Sam': [94, 77, 90], 'Katie': [100, 81, 82],
'Bob': [83, 65, 85]}
grades = pd.DataFrame(grades_dict)
print(grades)
```
输出结果:
```
Wally Eva Sam Katie Bob
0 87 100 94 100 83
1 96 87 77 81 65
2 70 90 90 82 85
```
#### 1.1.2 自定义DataFrame的索引
可以使用`index`属性来更改DataFrame的索引。指定索引时,必须提供一个一维集合,其元素数量与DataFrame的行数相同。
```python
grades.index = ['Test1', 'Test2', 'Test3']
print(grades)
```
输出结果:
```
Wally Eva Sam Katie Bob
Test1 87 100 94 100 83
Test2 96 87 77 81 65
Test3 70 90 90 82 85
```
### 1.2 访问DataFrame的数据
pandas提供了多种方式来访问和选择DataFrame中的数据。
#### 1.2.1 访问列
可以通过列名来访问DataFrame的列,返回一个Series。如果列名是有效的Python标识符,也可以将其作为属性来访问。
```python
print(grades['Eva'])
print(grades.Sam)
```
输出结果:
```
Test1 100
Test2 87
Test3 90
Name: Eva, dtype: int64
Test1 94
Test2 77
Test3 90
Name: Sam, dtype: int64
```
#### 1.2.2 访问行
建议使用`loc`和`iloc`属性来访问行。`loc`使用标签索引,`iloc`使用整数索引。
```python
print(grades.loc['Test1'])
print(grades.iloc[1])
```
输出结果:
```
Wally 87
Eva 100
Sam 94
Katie 100
Bob 83
Name: Test1, dtype: int64
Wally 96
Eva 87
Sam 77
Katie 81
Bob 65
Name: Test2, dtype: int64
```
#### 1.2.3 使用切片和列表选择行
可以使用切片和列表来选择特定的行。使用`loc`时,包含切片的高索引;使用`iloc`时,不包含切片的高索引。
```python
print(grades.loc['Test1':'Test3'])
print(grades.iloc[0:2])
print(grades.loc[['Test1', 'Test3']])
print(grades.iloc[[0, 2]])
```
输出结果:
```
Wally Eva Sam Katie Bob
Test1 87 100 94 100 83
Test2 96 87 77 81 65
Test3 70 90 90 82 85
Wally Eva Sam Katie Bob
Test1 87 100 94 100 83
Test2 96 87 77 81 65
Wally Eva Sam Katie Bob
Test1 87 100 94 100 83
Test3 70 90 90 82 85
Wally Eva Sam Katie Bob
Test1 87 100 94 100 83
Test3 70 90 90 82 85
```
#### 1.2.4 选择行和列的子集
可以同时使用切片和列表来选择行和列的子集。
```python
print(grades.loc['Test1':'Test2', ['Eva', 'Katie']])
print(grades.iloc[[0, 2], 0:3])
```
输出结果:
```
Eva Katie
Test1 100 100
Test2 87 81
Wally Eva Sam
Test1 87 100 94
Test3 70 90 90
```
### 1.3 布尔索引
布尔索引是pandas强大的选择功能之一。可以使用布尔条件来选择满足条件的数据。
```python
print(grades[grades >= 90])
print(grades[(grades >= 80) & (grades < 90)])
```
输出结果:
```
Wally Eva Sam Katie Bob
Test1 NaN 100.0 94.0 100.0 NaN
Test2 96.0 NaN NaN NaN NaN
Test3 NaN 90.0 90.0 NaN NaN
Wally Eva Sam Katie Bob
Test1 87.0 NaN NaN NaN 83.0
Test2 NaN 87.0 NaN 81.0 NaN
Test3 NaN NaN NaN 82.0 85.0
```
### 1.4 访问特定单元格
可以使用`at`和`iat`属性来访问DataFrame中的单个单元格。`at`使用标签索引,`iat`使用整数索引。
```python
print(grades.at['Test2', 'Eva'])
print(grades.iat[2, 0])
grades.at['Test2', 'Eva'] = 100
grades.iat[1, 2] = 87
print(grades.at['Test2', 'Eva'])
print(grades.iat[1, 2])
```
输出结果:
```
87
70
100
87.0
```
### 1.5 描述性统计
DataFrame和Series都有`describe`方法,可以计算基本的描述性统计信息。默认情况下,pandas以浮点数计算统计信息,并显示六位小数。可以使用`set_option`函数来控制精度。
```python
print(grades.describe())
pd.set_option('precision', 2)
print(grades.describe())
print(grades.mean())
```
输出结果:
```
Wally Eva Sam Katie Bob
count 3.000000 3.000000 3.000000 3.000000 3.000000
mean 84.333333 92.333333 87.000000 87.666667 77.6666
```
0
0
复制全文
相关推荐










