【实战演练】利用Pandas和NumPy进行销售数据分析
发布时间: 2024-06-24 17:02:55 阅读量: 70 订阅数: 128
![【实战演练】利用Pandas和NumPy进行销售数据分析](https://img-blog.csdnimg.cn/20200625221317271.png?)
# 2.1 Pandas数据结构
Pandas库提供了两种主要的数据结构:DataFrame和Series。
- **DataFrame**:DataFrame是一个二维表格结构,类似于Excel电子表格。它由行和列组成,每个单元格存储一个值。DataFrame可以表示各种类型的数据,包括数字、字符串、布尔值等。
- **Series**:Series是一个一维数组,类似于Python列表。它存储一系列数据值,可以是任何类型。Series通常用于表示单个变量的数据,例如一列温度值或一组股票价格。
# 2. Pandas数据操作
Pandas是一个强大的Python库,用于数据操作和分析。它提供了各种数据结构和操作,使数据处理变得高效且直观。
### 2.1 Pandas数据结构
Pandas中最重要的数据结构是DataFrame和Series。
#### 2.1.1 DataFrame和Series
**DataFrame**是一个二维表状数据结构,类似于Excel电子表格。它由行和列组成,每个单元格包含一个值。DataFrame的每一行代表一个观测值,每一列代表一个变量。
**Series**是一个一维数组,类似于Python列表。它由一个索引和一个值序列组成。Series通常用于表示单个变量的数据。
#### 2.1.2 数据类型和缺失值处理
Pandas支持各种数据类型,包括数字、字符串、布尔值和日期时间。它还提供了处理缺失值(NaN)的工具。
* **数据类型转换:**`astype()`方法可用于将数据类型从一种类型转换为另一种类型。
* **缺失值处理:**`isnull()`方法可用于识别缺失值,`fillna()`方法可用于用特定值填充缺失值。
```python
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob'], 'age': [25, 30, 28]})
# 查看数据类型
print(df.dtypes)
# 将'age'列转换为浮点数
df['age'] = df['age'].astype(float)
# 查看缺失值
print(df.isnull())
# 用0填充缺失值
df['age'].fillna(0, inplace=True)
```
### 2.2 Pandas数据操作
Pandas提供了广泛的数据操作功能,包括筛选、排序、分组、聚合、合并和连接。
#### 2.2.1 数据筛选和排序
* **筛选:**`query()`方法可用于根据条件筛选DataFrame。
* **排序:**`sort_values()`方法可用于根据一个或多个列对DataFrame进行排序。
```python
# 根据年龄筛选DataFrame
df_filtered = df.query('age > 28')
# 根据年龄对DataFrame排序
df_sorted = df.sort_values('age', ascending=False)
```
#### 2.2.2 数据分组和聚合
* **分组:**`groupby()`方法可用于将DataFrame按一个或多个列分组。
* **聚合:**`agg()`方法可用于对分组数据进行聚合操作,例如求和、求平均值或求最大值。
```python
# 按性别分组并计算每个组的平均年龄
df_grouped = df.groupby('gender').agg({'age': 'mean'})
```
#### 2.2.3 数据合并和连接
* **合并:**`merge()`方法可用于将两个或多个DataFrame合并在一起,基于共同的列。
* **连接:**`concat()`方法可用于将两个或多个DataFrame连接在一起,沿着行或列。
```python
# 创建两个DataFrame
df1 = pd.DataFrame({'name': ['John', 'Mary'], 'age': [25, 30]})
df2 = pd.DataFrame({'name': ['Bob', 'Alice'], 'city': ['London', 'Paris']})
# 合并两个DataFrame
df_merged = pd.merge(df1, df2, on='name')
# 连接两个DataFrame
df_concatenated = pd.concat([df1, df2], ignore_index=True)
```
# 3.1 NumPy数组
#### 3.1.1 数组的创建和操作
NumPy数组是NumPy中用于存储和操作多维数据的核心数据结构。与Python列表不同,NumPy数组具有同质的数据类型,并且可以高效地执行数学和统计运算。
**数组的创建**
NumPy提供了多种创建数组的方法:
- `np.array()`:将列表、元组或其他可迭代对象转换为数组。
- `np.zeros()`:创建指定形状和数据类型的全零数组。
- `np.ones()`:创建指定形状和数据类型的全一数组。
- `np.full()`:创建指定形状和数据类型,并用给定值填充的数组。
- `np.arange()`:创建指定范围和步长的数组。
- `np.linspace()`:创建指定范围和点数的均匀分布数组。
**示例:**
```python
import numpy as np
# 从列表创建数组
array1 = np.array([1, 2, 3, 4, 5])
# 创建全零数组
array2 = np.zeros((3, 4))
# 创建全一数组
array3 = np.ones((2, 3))
# 创建指定值填充的数组
array4 = np.full((2, 3), 5)
# 创建指定范围的数组
array5 = np.arange(10)
# 创建均匀分布的数组
array6 = np.lin
```
0
0