如何让Matplotlib饼图显示房屋状况的原始分类文本而非数字?
解决饼图标签显示数字而非分类文本的问题
问题原因
你的condition_of_the_house列原本存储的是good、bad等文本分类,现在被转换成了1-5的数值编码,导致饼图标签显示数字。
解决方案
1. 恢复分类文本映射
先确认数值对应的文本分类(可参考数据集原始定义,常见映射比如1:Good, 2:Bad, 3:Excellent, 4:Fair, 5:Poor),用map函数将数值列转换回文本:
# 定义数值到文本的映射(根据实际数据集调整) condition_mapping = { 1: 'Good', 2: 'Bad', 3: 'Excellent', 4: 'Fair', 5: 'Poor' } df['condition_of_the_house'] = df['condition_of_the_house'].map(condition_mapping)
2. 优化饼图代码(避免标签顺序不匹配)
原代码用df.condition_of_the_house.unique()获取标签,可能出现计数和标签顺序不一致的问题,建议改用value_counts()的索引作为标签:
import matplotlib.pyplot as plt condition_counts = df['condition_of_the_house'].value_counts() explode = [0.1] * len(condition_counts) explode[0] = 0.2 plt.pie(condition_counts, labels=condition_counts.index, explode=explode, autopct="%1.1f%%") plt.title('Condition of the house') plt.legend() plt.show()
3. 预防后续问题:读取数据时指定类型
如果是读取数据集时自动将分类列转为数值,下次读取时指定列类型为字符串或分类:
import pandas as pd df = pd.read_csv('your_dataset_file.csv', dtype={'condition_of_the_house': str})
内容的提问来源于stack exchange,提问作者pk10
相关产品推荐
相关产品推荐

