通过对数据的描述性统计,以及时间数据信息提取,分组聚合操作已经获得了相当多的信息,但用户信息更新表和登录信息表是长表,而主表是宽表,需要通过长宽表转换将收据合并在一张以用户编号为主键的表内。 3.实现思路及步骤 (1)使用 pivot table 函数进行长宽表转换 (2)使用 crosstab 方法进行长宽表转换。
时间: 2023-06-19 16:08:03 浏览: 169
MySQL数据操作与查询笔记 • 【第6章 聚合函数和分组查询】
1. 使用 pivot table 函数进行长宽表转换:
Pivot table 函数可以将长表转换为宽表,其基本语法如下:
```python
pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
```
其中,参数说明如下:
- data:需要进行转换的数据表;
- values:需要进行聚合的数据列;
- index:转换后的宽表索引,即主键;
- columns:转换后的宽表列名;
- aggfunc:统计函数,如 sum、mean、count、median 等;
- fill_value:缺失值填充值;
- margins:是否显示边缘汇总;
- dropna:是否删除缺失值;
- margins_name:边缘汇总的名称。
例如,将用户信息更新表 user_update_table 转换为宽表,以用户编号为主键,更新日期为列名,更新数量为值:
```python
import pandas as pd
# 读取数据表
user_update_table = pd.read_csv('user_update_table.csv')
# 转换为宽表
user_update_table_pivot = pd.pivot_table(user_update_table, values='update_count', index='user_id', columns='update_date', aggfunc='sum')
# 显示前 5 行
print(user_update_table_pivot.head())
```
2. 使用 crosstab 方法进行长宽表转换:
crosstab 方法可以将长表转换为宽表,其基本语法如下:
```python
pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)
```
其中,参数说明如下:
- index:需要转换的长表索引列;
- columns:需要转换的长表列名列;
- values:需要进行聚合的数据列;
- rownames:转换后的宽表索引,即主键;
- colnames:转换后的宽表列名;
- aggfunc:统计函数,如 sum、mean、count、median 等;
- margins:是否显示边缘汇总;
- margins_name:边缘汇总的名称;
- dropna:是否删除缺失值;
- normalize:是否进行归一化。
例如,将登录信息表 login_table 转换为宽表,以用户编号为主键,登录日期为列名,登录数量为值:
```python
import pandas as pd
# 读取数据表
login_table = pd.read_csv('login_table.csv')
# 转换为宽表
login_table_crosstab = pd.crosstab(index=login_table['user_id'], columns=login_table['login_date'], values=login_table['login_count'], aggfunc='sum')
# 显示前 5 行
print(login_table_crosstab.head())
```
阅读全文