Matplotlib:DataFrame中的数据显示不正确

vql8enpb  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(131)

我有一个DataFrame,里面有公寓的价格和房间的数量(客厅,霍尔斯,浴室)。我需要做一个条形图,表示价格如何取决于每种房型的数量。
显示我的数据,但显示不正确。我到底做错了什么?

dataFrame = pd.read_csv('dataset.csv', sep=',') #read the dataset
dataFrame.replace('', np.nan)
#create new smaller dataset
roomsDF = pd.DataFrame(dataFrame[['Price', 'Living Rooms', 'Halls', 'Bathrooms']]) 
roomsDF = roomsDF.dropna(axis='rows')

#plotting
plt.figure(figsize=(12, 4))

plt.subplot(131)
print(roomsDF.head(300))
plt.bar(roomsDF['Living Rooms'], roomsDF['Price'], color='darkgreen')

plt.subplot(132)
plt.bar(roomsDF['Halls'], roomsDF['Price'], color='limegreen')

plt.subplot(133)
plt.bar(roomsDF['Bathrooms'], roomsDF['Price'], color='seagreen')

plt.savefig('Picture')

字符串
它肯定应该出现在一个上升的方式(逻辑上)(我已经检查!)有1个客厅的公寓比有2个客厅的便宜),但它有一个巨大的价格为1室公寓。
数据是这样的东西:一个客厅的平均价格应为~659,两个L房间的平均价格应为~1061(在Excel中计算)Data
Graph是这样的:Graph

ftf50wuq

ftf50wuq1#

这可能是因为数据类型,你可以尝试这个更新的代码,我为你开发的,但如果我知道什么是数据或共享的一部分,我可以帮助你更好

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Read the dataset
dataFrame = pd.read_csv('dataset.csv', sep=',')
dataFrame.replace('', np.nan, inplace=True)  # Apply the NaN replacement to the DataFrame

# Create new smaller dataset
roomsDF = pd.DataFrame(dataFrame[['Price', 'Living Rooms', 'Halls', 'Bathrooms']])
roomsDF.dropna(axis='rows', inplace=True)  # Drop rows with missing values

# Convert columns to numerical data type
roomsDF['Living Rooms'] = pd.to_numeric(roomsDF['Living Rooms'])
roomsDF['Halls'] = pd.to_numeric(roomsDF['Halls'])
roomsDF['Bathrooms'] = pd.to_numeric(roomsDF['Bathrooms'])

# Plotting
plt.figure(figsize=(12, 4))

plt.subplot(131)
plt.bar(roomsDF['Living Rooms'], roomsDF['Price'], color='darkgreen')
plt.xlabel('Living Rooms')
plt.ylabel('Price')

plt.subplot(132)
plt.bar(roomsDF['Halls'], roomsDF['Price'], color='limegreen')
plt.xlabel('Halls')
plt.ylabel('Price')

plt.subplot(133)
plt.bar(roomsDF['Bathrooms'], roomsDF['Price'], color='seagreen')
plt.xlabel('Bathrooms')
plt.ylabel('Price')

plt.tight_layout()  # Adjust subplot spacing
plt.savefig('Picture.png')

字符串

tsm1rwdh

tsm1rwdh2#

在这里我也需要使用groupby。没有groupby,它只是显示一些随机的东西。

plotData = pd.DataFrame(dataFrame.groupby(['Living Rooms'])['Price'].mean()).reset_index()
plt.bar(plotData['Living Rooms'], plotData['Price'], color='darkgreen')

字符串

相关问题