Python循环仅绘制分类变量
Posted
技术标签:
【中文标题】Python循环仅绘制分类变量【英文标题】:Python-loop to plot only categorical variables 【发布时间】:2019-08-09 03:16:48 【问题描述】:我有一个包含许多分类变量的数据集,我想在散点图中绘制这些变量,而不必对变量进行编码。 这是我的尝试:
fig = plt.figure(figsize=(18, 9))
for column in df:
if df[column].dtype != np.int64 and df[column].dtype != np.float64:
ca = df.plot.scatter(x=df[column],y= df['log_prices'], ax =
fig.add_subplot(2,3,df[column]+1))
plt.plot(df.iloc[:,df[column]].values, sm.OLS(df.iloc
[:,df['log_prices'].values,sm.add_constant(df.iloc[:,df[column]].values)).fit().fittedvalues,'r-')
这是我目前遇到的错误:
----> 5 ca = df.plot.scatter(x=df[column],y=df['log_prices'], ax = fig.add_subplot(2,3,df_061[column]+1))
cannot concatenate 'str' and 'int' objects
这显然与 log_prices 有关。
有没有更简单的方法?
谢谢
【问题讨论】:
一方面,你可以跳过循环,使用pandas内置的select_dtypes
函数,即just greatIMO
【参考方案1】:
from pandas.api.types import is_string_dtype
from pandas.api.types import is_numeric_dtype
categorical=[]
for column in df:
if is_string_dtype(df[column]):
categorical.append(column)
fig, ax = plt.subplots(2, 4, figsize=(20, 10))
for variable, subplot in zip(categorical, ax.flatten()):
sns.countplot(df_2[variable], ax=subplot)
for label in subplot.get_xticklabels():
label.set_rotation(90)
【讨论】:
df_2需要改成df【参考方案2】:我建议进行以下更改:
ca = df.plot.scatter(x = column, y = 'log_prices', ax = fig.add_subplot(2, 3, df[column] + 1))
使用df.plot()
方法时,您需要为x 和y 参数提供列名,而不是实际数据。数据已经存在于df
,因此您只需为其提供要使用的列。
这是使用示例数据对您的代码进行的部分复制:
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(10,5), columns = ['A','B','C','D','E'])
fig = plt.figure(figsize=(18, 9))
idx = 0
for column in df:
# if df[column].dtype != np.int64 and df[column].dtype != np.float64:
idx += 1
ca = df.plot.scatter(x = column, y = 'A', ax = fig.add_subplot(2,3,idx))
# plt.plot(df.iloc[:,df[column]].values, sm.OLS(df.iloc[:,df['log_prices'].values,sm.add_constant(df.iloc[:,df[column]].values)).fit().fittedvalues,'r-')
此代码生成以下图:
【讨论】:
我现在只得到这个:plt.show()
(甚至关闭它plt.clf()
,plt.close()
)。
谢谢。我看到您已经注释掉了仅包含分类变量的列的 if 语句。但是,这就是我遇到的麻烦。仅绘制分类变量的最佳方法是什么?以上是关于Python循环仅绘制分类变量的主要内容,如果未能解决你的问题,请参考以下文章