PowerBI中Python条形图与VS Code结果不一致问题求助
PowerBI中Python图表与VS Code结果不一致的解决方法
核心问题出在PowerBI自动生成的代码上,尤其是dataset.drop_duplicates()这行——它会直接删除所有重复行,导致统计用的原始数据丢失,和VS Code中基于完整SQL数据的统计结果自然出现差异。
问题分析
VS Code中直接使用SQL Server的完整数据进行统计,而PowerBI自动生成的两行代码:
dataset = pandas.DataFrame(FatherJobStatusCode, MotherJobStatusCode) dataset = dataset.drop_duplicates()
第二行的去重操作是关键错误:原始数据中重复的FatherJobStatusCode/MotherJobStatusCode是正常样本(比如多个受访者的父母职业状态相同),去重后会丢失大量有效数据,最终的value_counts()统计结果必然和真实情况不符。
解决方案
- 移除去重代码:删除
dataset = dataset.drop_duplicates()这一行,保留原始数据的完整性。 - 验证数据量:可以在代码开头添加一行打印语句,对比PowerBI和VS Code中的数据行数,确认数据一致:
print(f"当前数据行数:{len(dataset)}") - 修改后的完整代码:
import matplotlib.pyplot as plt import pandas as pd nuevos_valores = {0: 'No disponible', 1: 'Empleado', 2: 'Trabaja Independiente', 3: 'Cesante', 5: 'Trabaja fuera de la ciudad', 9: 'Nómade'} # 保留PowerBI自动生成的DataFrame构造,移除去重 dataset = pandas.DataFrame(FatherJobStatusCode, MotherJobStatusCode) dataset.loc[dataset['FatherJobStatusCode'].isin(nuevos_valores.keys()), 'FatherJobStatusCode'] = dataset['FatherJobStatusCode'].map(nuevos_valores) dataset.loc[dataset['MotherJobStatusCode'].isin(nuevos_valores.keys()), 'MotherJobStatusCode'] = dataset['MotherJobStatusCode'].map(nuevos_valores) padres_counts = dataset['FatherJobStatusCode'].value_counts().sort_index() madres_counts = dataset['MotherJobStatusCode'].value_counts().sort_index() counts_df = pd.DataFrame({'Padres': padres_counts, 'Madres': madres_counts}) ax = counts_df.plot(kind='bar', rot=0, color=['#FA05C7', '#0F26FA'], edgecolor='black') ax.set_title('Conteo de Estatus laboral de los padres') ax.set_xlabel('Categoría') ax.set_ylabel('Conteo') plt.xticks(rotation=45) for container in ax.containers: ax.bar_label(container, label_type='edge', fontsize=8) ax.set_facecolor('None') plt.show()
验证步骤
运行修改后的代码后,查看padres_counts和madres_counts的输出数值,和VS Code中的统计结果对比,确认数据一致后,图表结果就会匹配。
内容的提问来源于stack exchange,提问作者Constanza Opazo
相关产品推荐
相关产品推荐

