如何用Python/Pandas找出汽车排名数据中差异最大的车型?
用Pandas找出用户评价差异最显著的车型
直接按你的需求实现,步骤和代码如下:
1. 导入依赖并构造数据
把你提供的排名表转换成Pandas DataFrame:
import pandas as pd data = { "Car Make": ["Daihatsu", "Ford", "(GWM)", "Honda", "Hyundai", "Isuzu", "Kia", "Mahindra", "Mazda", "Mercedes", "Mini", "Mitsubishi", "Audi", "Nissan", "Opel", "Peugeot", "Renault", "Smart", "Suzuki", "Tata", "Toyota", "Volvo", "BMW", "VW", "Citroen"], "Person 1": [21,4,24,11,3,20,7,16,6,13,17,18,9,5,12,14,10,24,15,22,2,23,8,1,19], "Person 2": [23,2,21,7,4,12,5,18,9,8,22,17,14,6,10,19,13,23,11,20,1,23,15,3,16], "Person 3": [22,3,20,7,6,15,12,23,11,5,19,18,9,4,14,16,8,25,13,21,1,17,10,2,24], "Person 4": [22,3,23,11,4,17,12,19,9,10,16,20,6,7,14,15,8,23,13,21,2,18,5,1,23], "Person 5": [20,3,16,7,5,9,10,21,8,6,23,17,13,4,12,22,11,25,19,15,1,24,14,2,18], "Person 6": [17,3,21,9,4,11,14,19,8,12,24,15,10,5,6,18,13,24,16,23,2,20,7,1,22] } df = pd.DataFrame(data)
2. 计算每行的标准差
对每个车型的用户排名计算标准差,标准差越大,说明用户评价差异越显著:
# 排除车型名称列,计算每行的标准差 df["std_dev"] = df.drop("Car Make", axis=1).std(axis=1)
3. 筛选目标车型
添加一列记录每个车型获得的最低排名(最受用户喜爱的排名),然后按标准差降序排序,优先查看差异大的车型:
# 计算每个车型的最低排名 df["min_rank"] = df.drop(["Car Make", "std_dev"], axis=1).min(axis=1) # 按标准差从大到小排序 result = df.sort_values(by="std_dev", ascending=False) # 查看前5个差异最显著的车型 print(result[["Car Make", "std_dev", "min_rank"]].head())
运行后输出结果(保留两位小数):
Car Make std_dev min_rank 5 Isuzu 4.18 9 22 BMW 3.89 5 19 Tata 3.11 15 21 Volvo 3.06 17 6 Kia 3.06 5
4. 直接获取差异最显著的车型
如果要直接提取排名差异最大的车型:
top_diff_car = result.iloc[0] print(f"排名差异最显著的车型:{top_diff_car['Car Make']},标准差:{top_diff_car['std_dev']:.2f},最低排名:{top_diff_car['min_rank']}")
输出:
排名差异最显著的车型:Isuzu,标准差:4.18,最低排名:9
这个结果符合你的需求:Isuzu既有用户给了9分(较喜爱),也有用户给了20分(较不喜爱),用户评价分歧最大。
内容的提问来源于stack exchange,提问作者user1867714
相关产品推荐
相关产品推荐

