繁体   English   中英

在 seaborn 中绘制不同长度的 arrays

[英]Plotting arrays with different lengths in seaborn

我有一个 dataframe ,我想从中制作一条 plot ,该数组包含以下内容

   Symbol  Avg.Sentiment  Weighted  Mentions                                          Sentiment
0     AMC           0.14      0.80       557  [-0.38, -0.48, -0.27, -0.42, 0.8, -0.8, 0.13, ...
2     GME           0.15      0.26       175  [-0.27, 0.13, -0.53, 0.65, -0.91, 0.66, 0.67, ...
1      BB           0.23      0.29       126  [-0.27, 0.34, 0.8, -0.14, -0.39, 0.4, 0.34, -0...
11    SPY          -0.06     -0.03        43  [0.32, -0.38, -0.54, 0.36, -0.18, 0.18, -0.33,...
4    SPCE           0.26      0.09        35  [0.65, 0.57, 0.74, 0.48, -0.54, -0.15, -0.3, -...
13     AH           0.06      0.02        33  [0.62, 0.66, -0.18, -0.62, 0.12, -0.42, -0.59,...
12   PLTR           0.16      0.05        29  [0.66, 0.36, 0.64, 0.59, -0.42, 0.65, 0.15, -0...
15   TSLA           0.13      0.03        24  [0.1, 0.38, 0.64, 0.42, -0.32, 0.32, 0.44, -0....

以此类推,'Sentiment'列表中的元素数量与提及次数相同,我想制作一条plot,其中Symbol为x轴,sentiment为y轴,我相信这个问题我遇到的是由于列表长度不同,我得到的实际错误读数是

ValueError: setting an array element with a sequence.

我试图用来创建条 plot 的代码是这个

def symbolSentimentVisualization(dataset):
    sns.stripplot(x='Symbol',y='Sentiment',data=dataset.loc[:9])
    plt.show()

the other part of my issue I would guess has something to do with numpy trying to set multidimensional arrays with different lengths before being put into a seaborn plot, but not 100% on that, if the solution is to plot one row at a time and然后合并肯定会起作用的绘图,但我不确定我应该调用什么来做到这一点,因为尝试以下方法似乎也不起作用。

def symbolSentimentVisualization(dataset):
    sns.stripplot(x=dataset['Symbol'][0],y=dataset['Sentiment'][0],data=dataset.loc[:9])
    plt.show()

IIUC 先explode “情绪”,然后是 plot:

df = df.explode('Sentiment')
ax = sns.stripplot(x="Symbol", y="Sentiment", data=df)

样本数据:

np.random.seed(5)
df = pd.DataFrame({
    'Symbol': ['AMC', 'GME', 'BB', 'SPY', 'SPCE'],
    'Mentions': [557, 175, 126, 43, 35]
})

df['Sentiment'] = df['Mentions'].apply(lambda x: (np.random.random(x) * 2) - 1)
  Symbol  Mentions                                          Sentiment
0    AMC       557  [-0.556013657820521, 0.7414646123547528, -0.58...
1    GME       175  [-0.5673003921341209, -0.6504850189478857, 0.1...
2     BB       126  [0.7771316020052821, 0.26579994709269994, -0.4...
3    SPY        43  [-0.5966607678089173, -0.4473484233894889, 0.7...
4   SPCE        35  [0.7934741289205556, 0.17613102678923398, 0.58...

结果图:

图形


带有示例数据的完整工作示例:

import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt

np.random.seed(5)
df = pd.DataFrame({
    'Symbol': ['AMC', 'GME', 'BB', 'SPY', 'SPCE'],
    'Mentions': [557, 175, 126, 43, 35]
})

df['Sentiment'] = df['Mentions'].apply(lambda x: (np.random.random(x) * 2) - 1)

df = df.explode('Sentiment')
ax = sns.stripplot(x="Symbol", y="Sentiment", data=df)
plt.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM