![](/img/trans.png)
[英]How to fix the error of "plt.scatter(x_test_encoded[:, 0], x_test_encoded[:, 1], c=y_test)"
[英]How to Write a plt.scatter(x, y) function in one line where y=function of x
我正在绘制散点图 plot 以显示 dataframe 中的 null 值。 如您所见, plt.scatter() function 的表现力不够。 除非您看到前面的行,否则 list(range(0,1200)) 和 'a' 之间的关系并不清楚。 plt.scatter(x,y) 是否可以以更明确的方式编写,这样可以很容易地理解 x 和 y 是如何相关的。 就像如果有人只看到 plt.scatter(x,y),他们就会明白它的含义。
a = []
for i in range(0,1200):
feature_with_na = [feature for feature in df.columns if df[feature].isnull().sum()>i]
a.append(len(feature_with_na))
plt.scatter(list(range(0,1200)), a)
在 x 轴上你有数字,然后在 y 轴上你想要 plot DataFrame 中的列数超过 null 值的数量。
您可以计算每列中 null 值的数量,而不是循环,并使用numpy.broadcasting
,( [:, None]
)与您的数字数组进行比较。 这允许您指定数字的xarr
,然后在比较中使用相同的数组。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plot
df = pd.DataFrame(np.random.choice([1,2,3,4,5,np.NaN], (100,10)))
# Range of 'x' values to consider
xarr = np.arange(0, 100)
plt.scatter(xarr, (df.isnull().sum().to_numpy()>xarr[:, None]).sum(axis=1))
ALollz 的回答很好,但如果这是你的事情,这里有一个不那么笨重的选择:
feature_null_counts = df.isnull().sum()
n_nulls = list(range(100))
features_with_n_nulls = [sum(feature_null_counts > n) for n in n_nulls]
plt.scatter(n_nulls, features_with_n_nulls)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.