首页 > 解决方案 > python中的散点图密度来自csv中的数据

问题描述

我有一个非常庞大的数据集,包含 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,但它不起作用。

我希望输出(密度图)看起来像这样:

在此处输入图像描述

标签: pythonscatter-plotdata-analysisdensity-plot

解决方案


使用列名列表查询数据框,例如在您的代码中:

x = datas[[FIRST_ATTRIBUTE]]
y = datas[[SECOND_ATTRIBUTE]]

产生 pd.Dataframes,plt.hist2d 无法处理

尝试:

x = datas[FIRST_ATTRIBUTE]
y = datas[SECOND_ATTRIBUTE]

得到 pd.Series。这些你应该可以用 plt.hist2d 绘制


推荐阅读