我有一个非常庞大的数据集,共有18000名玩家。例如,每个玩家都具有“整体”和“完成”功能,我想制作散点图,因为使用“普通”图,我无法确定哪里有更多的玩家,哪里有更少的玩家。
普通散点图代码看起来像这样...
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
DATA_LOCATION = "main_players.csv"
FIRST_ATTRIBUTE = "Finishing"
SECOND_ATTRIBUTE = "Overall"
datas = pd.read_csv(DATA_LOCATION)
x = datas[[FIRST_ATTRIBUTE]]
y = datas[[SECOND_ATTRIBUTE]]
plt.scatter(x, y, color='r')
plt.xlabel('Finishing')
plt.ylabel('Overall')
plt.title('Odnos overall i finishinga')
plt.show()
我在Internet上找到了执行以下操作的代码:
# libraries
import matplotlib.pyplot as plt
import numpy as np
# create data
x = np.random.normal(size=50000)
y = x * 3 + np.random.normal(size=50000)
# Big bins
plt.hist2d(x, y, bins=(50, 50), cmap=plt.cm.jet)
#plt.show()
# Small bins
plt.hist2d(x, y, bins=(300, 300), cmap=plt.cm.jet)
#plt.show()
# If you do not set the same values for X and Y, the bins aren't square !
plt.hist2d(x, y, bins=(300, 30), cmap=plt.cm.jet)
#plt.show()
我只用x和y替换了x,但这是行不通的。
我希望输出(密度图)看起来像这样:
答案 0 :(得分:0)
使用列名列表查询数据框,如代码中所示:
x = datas[[FIRST_ATTRIBUTE]]
y = datas[[SECOND_ATTRIBUTE]]
产生pd.hist2d无法处理的pd.Dataframes
尝试:
x = datas[FIRST_ATTRIBUTE]
y = datas[SECOND_ATTRIBUTE]
获得pd.Series。这些您应该能够使用plt.hist2d进行绘制