交叉表

来源

交叉表是一种特殊的透视表,主要用于计算分组频率。
使用pandas提供的crosstab函数制作交叉表。

实例

部分数据展示

制作交叉表

import pandas as pd
import numpy as np
from sqlalchemy import create_engine
#使用sqlalchemy库建立mysql数据库连接
engine = create_engine('mysql+pymysql://root:123456789@127.0.0.1:3306/testdb?charset=utf8')
detail = pd.read_sql_table('meal_order_detail1', con = engine)
detailCross = pd.crosstab(
      index=detail['order_id'],
      columns=detail['dishes_name'],
      values = detail['counts'],aggfunc = np.sum)
print('以order_id和dishes_name为分组键counts为值的透视表前5行5列为:\n',detailCross.iloc[:5,:5])#detailCross.iloc切片方法,接受参数为行索引和列索引的位置

#pd.crosstab部分参数
#index:接受string或list。表示行索引键。无默认
#columns:接受string或list。表示列索引键。无默认
#values:接受array。表示聚合数据。默认为None
#margins:布尔值 ,默认是False ,表示汇总功能的开关,即小计
#dropna:布尔值。表示是否删掉全为NAN的列,默认False

结果

分析

order_id=1002且dishes_name=42度海之蓝时,count=0,所以显示NaN。
order_id=1011且dishes_name=42度海之蓝时,count=1,所以显示1.0。

posted @ 2020-12-29 14:56  SwiftYao  阅读(826)  评论(0)    收藏  举报