如何显示pandas分组统计全量结果?解决输出省略及报错问题
问题:如何显示Pandas分组统计的全量结果
我需要展示全量数据,用value_counts()统计每个Title下不同Rating的数量,预期输出格式如下:
Title Rating $1,000,000 Duck (1971) 3 15 2 8 4 7 5 4 1 3 eXistenZ (1999) 4 142 3 109 2 61 5 55 1 43 Sliding Doors (1998) 4 211 3 121 5 115 2 32 1 11
执行以下代码后,统计功能正常,但输出被省略(显示...):
dataall.groupby('Title')['Rating'].value_counts()
输出示例:
Title Rating $1,000,000 Duck (1971) 3 15 2 8 4 7 5 4 1 3 ... eXistenZ (1999) 4 142 3 109 2 61 5 55 1 43
尝试用set_option('max_rows', None)解决时,出现报错:
AttributeError: 'DataFrame' object has no attribute 'set_option'
全屏查看输出仍有省略号,完整代码如下:
from google.colab import drive drive.mount('/content/drive') from pandas import * from matplotlib.pyplot import * from math import * import numpy as num import pandas as pd import matplotlib import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D %matplotlib inline import seaborn as sns import statistics movies = pd.read_table("/content/drive/MyDrive/Colab Notebooks/Datasets/movies.dat",sep="::",names=['MovieID','Title','Genres'],encoding='latin-1') ratings = pd.read_table("/content/drive/MyDrive/Colab Notebooks/Datasets/ratings.dat",sep="::",names=['UserID','MovieID','Rating','Time'],encoding='latin-1') users = pd.read_table("/content/drive/MyDrive/Colab Notebooks/Datasets/users1.dat",sep="::",names=['UserID','Gender','Age','Occupation','ZipCode'],encoding='latin-1') allData = pd.merge(pd.merge(movies, ratings, on="MovieID"), users, on="UserID") dataall = allData[allData.columns[1:11]] dataall.groupby('Title')['Rating'].value_counts()
解决方案
1. 纠正set_option的使用方式
set_option是Pandas库的全局配置方法,不能直接调用DataFrame对象的这个方法。正确写法是:
import pandas as pd # 设置显示所有行 pd.set_option('display.max_rows', None) # 可选:设置显示所有列,避免列截断 pd.set_option('display.max_columns', None)
把这段代码放在数据读取之前,就能让Pandas输出全量数据,不再用...省略。
2. 转换为DataFrame确保全量显示
如果设置全局配置后仍有问题,可以把分组统计的Series结果转换为DataFrame,再输出:
# 执行统计并转换为DataFrame result = dataall.groupby('Title')['Rating'].value_counts().reset_index(name='Count') # 直接打印或在Colab中显示 print(result) # 或者用Colab的display方法 display(result)
3. Colab专属优化(可选)
在Colab中可以额外设置输出宽度,避免列内容被换行截断:
pd.set_option('display.width', 1000)
内容的提问来源于stack exchange,提问作者Migs Panganiban
相关产品推荐
相关产品推荐

