Python入门求助:按燃料类型统计CSV中车辆数量并绘柱状图
燃料类型车辆统计与柱状图绘制解决方案
一、数据汇总(解决子数据集返回布尔值&求和问题)
你之前得到TRUE是因为仅写了判断条件(比如df['Fuel type'] == 'Gasoline'),这会返回布尔索引列,需要用它筛选行后再求和。推荐两种方法:
1. 高效分组汇总(优先使用)
用pandas的groupby一键完成筛选+求和,无需手动处理每个燃料类型:
import pandas as pd # 读取数据集(替换为你的文件路径,Excel文件用pd.read_excel) df = pd.read_csv('加州车辆数据集.csv') # 指定需要统计的燃料类型 target_fuels = ['Gasoline', 'Diesel and Diesel Hybrid', 'Hybrid Gasoline'] # 筛选目标数据后分组求和 fuel_total = df[df['Fuel type'].isin(target_fuels)].groupby('Fuel type')['Vehicles'].sum().reset_index() print(fuel_total)
2. 手动筛选求和(适合新手理解逻辑)
先通过布尔索引筛选对应燃料的行,再对Vehicles列求和:
import pandas as pd df = pd.read_csv('加州车辆数据集.csv') # 筛选每种燃料的行并求和 gasoline_num = df[df['Fuel type'] == 'Gasoline']['Vehicles'].sum() diesel_hybrid_num = df[df['Fuel type'] == 'Diesel and Diesel Hybrid']['Vehicles'].sum() hybrid_gas_num = df[df['Fuel type'] == 'Hybrid Gasoline']['Vehicles'].sum() # 整理成DataFrame方便后续画图 fuel_total = pd.DataFrame({ 'Fuel type': ['Gasoline', 'Diesel and Diesel Hybrid', 'Hybrid Gasoline'], 'Vehicles': [gasoline_num, diesel_hybrid_num, hybrid_gas_num] })
二、绘制柱状图
以下是两种常用绘图库的实现示例:
1. Matplotlib基础版
import matplotlib.pyplot as plt plt.bar(fuel_total['Fuel type'], fuel_total['Vehicles']) plt.title('加州不同燃料类型车辆总数') plt.xlabel('燃料类型') plt.ylabel('车辆总数') plt.xticks(rotation=45) # 旋转x轴标签避免重叠 plt.tight_layout() # 自动调整布局防止标签被截断 plt.show()
2. Seaborn美观版
import seaborn as sns import matplotlib.pyplot as plt sns.barplot(x='Fuel type', y='Vehicles', data=fuel_total) plt.title('加州不同燃料类型车辆总数') plt.xticks(rotation=45) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者8ironanalytics
相关产品推荐
相关产品推荐

