python pandas plot.bar 出现问题
count_grade = mpg['grade'].value_counts().sort_index() # method chaining
count_grade.plot.bar(rot=0)
plt.show()
代码 1)
mpg['grade'] = np.where(mpg['total'] >= 30, 'A', np.where(mpg['total'] >= 20, 'B', 'C'))
代码 2)
count_grade = mpg['grade'].value_counts()
count_grade.plot.bar(rot=0)
plt.show()
参考) count_grade -> 'A' : 10, 'B' : 118, 'C' : 106
(在 VSCode 中)
执行结果在有和没有代码 1) 的情况下是不同的。当我只运行代码 2) 而不运行代码 1) 时,A 的值变成了超过 120,而不是 10(在图表中)。查看图片描述然而,当这两段代码一起执行时,结果正常输出,只对 'A'、'B' 和 'C' 进行排序。查看图片描述
(在 Colab 中)
mpg['grade'] = np.where(mpg['total'] >= 30, 'A', np.where(mpg['total'] >=20, 'B', 'C'))
count_grade = mpg['grade'].value_counts().sort_index()
print(count_grade)
count_grade.plot.bar(rot=0)
当我把这段代码放在一个代码块中运行时,结果输出得很奇怪。查看图片描述
但是,单独运行最后一行代码就解决了这个问题。查看图片描述
我想知道问题出在哪里。请帮帮我。
期望的结果:但我的结果:
mpg.head().to_dict()
model': {0: 'a4', 1: 'a4', 2: 'a4', 3: 'a4', 4: 'a4'}, 'displ': {0: 1.8, 1: 1.8, 2: 2.0, 3: 2.0, 4: 2.8}, 'year': {0: 1999, 1: 1999, 2: 2008, 3: 2008, 4: 1999}, 'cyl': {0: 4, 1: 4, 2: 4, 3: 4, 4: 6}, 'trans': {0: 'auto(l5)', 1: 'manual(m5)', 2: 'manual(m6)', 3: 'auto(av)', 4: 'auto(l5)'}, 'drv': {0: 'f', 1: 'f', 2: 'f', 3: 'f', 4: 'f'}, 'cty': {0: 18, 1: 21, 2: 20, 3: 21, 4: 16}, 'hwy': {0: 29, 1: 29, 2: 31, 3: 30, 4: 26}, 'fl': {0: 'p', 1: 'p', 2: 'p', 3: 'p', 4: 'p'}, 'category': {0: 'compact', 1: 'compact', 2: 'compact', 3: 'compact', 4: 'compact'}, 'total': {0: 23.5, 1: 25.0, 2: 25.5, 3: 25.5, 4: 21.0}, 'grade': {0: 'B', 1: 'B', 2: 'B', 3: 'B', 4: 'B'}}
** 我的完整代码 **
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
mpg = pd.read_csv('mpg.csv')
mpg['total'] = (mpg['cty'] + mpg['hwy']) / 2
mpg['grade'] = np.where(mpg['total'] >= 30, 'A', np.where(mpg['total'] >= 20, 'B', 'C'))
count_grade = mpg['grade'].value_counts()
count_grade.plot.bar(rot=0)
plt.show()
count_grade = mpg['grade'].value_counts().sort_index()
count_grade.plot.bar(rot=0)
print(count_grade)
plt.show()
0 个回答
暂无回答