Python绘图数据帧“至少需要一个数组来连接”

2024-04-20 07:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一页上显示6个条形图。但我一直在犯错误

Exception has occurred: ValueError need at least one array to concatenate File "<array_function internals>", line 5, in concatenate

有人知道发生了什么吗

from pandas_datareader import data
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import math
sns.set(style='darkgrid', context='talk', palette='Dark2')

# Define the instruments to download. We would like to see Apple, Microsoft and the S&P500 index.
stocks = ['TSLA', 'MSFT', 'AMZN', 'GOOGL','AAPL', 'FB'] 

def bar_chart_percent_group_by_stock():
        # User pandas_reader.data.DataReader to load the desired data. As simple as that.
        panel_data = data.DataReader(stocks, 'yahoo', start_date, end_date)
        dff = panel_data.drop(['Low', 'Open', 'Close', 'Volume', 'Adj Close'], axis=1)
        startDates = ['2019-01-02', '2018-01-02', '2017-01-03', '2016-01-04', '2015-01-02']
        endDates = ['2019-12-31', '2018-12-31', '2017-12-29', '2016-12-30', '2015-12-31']
        #print(dff['Date'].str.contains("2017"))

        #show all rows whos index matches these values
        print(dff[dff.index.get_level_values(0).year.isin([2017])])
        print(dff[dff.index.get_level_values(0).year.isin([2016])])
        print(dff[dff.index.get_level_values(0).year.isin([2015])])

        col_count = 0
        for col in dff:  
            col_count = col_count + 1
            col_df = pd.DataFrame(columns=['Values'])      
            col_data = dff[col]
            #col_data.plot(kind='barh', left=0.0)
            print(col_data)
            count = 0
            list_data = []
            for start, end in zip(startDates, endDates):
                count = count + 1
                startYear = col_data[start]
                endYear = col_data[end]
                diff = endYear - startYear
                percent_diff = (diff / startYear) * 100 
                if math.isnan(percent_diff):
                    percent_diff = 0.0

                list_data.append(percent_diff)

            col_df['Values'] = list_data
            #plt.subplot(len(dff.columns),1,col_count)
            col_df.plot(kind='barh', left=0.0)
            plt.show()

bar_chart_percent_group_by_stock()

堆栈跟踪

Exception has occurred: ValueError
need at least one array to concatenate

  File "<__array_function__ internals>", line 5, in concatenate
  File "C:\Users\Dev\source\repos\stock-tool\stock_finder.py", line 127, in bar_chart_percent_group_by_stock
    plt.show()
  File "C:\Users\Dev\source\repos\stock-tool\stock_finder.py", line 165, in <module>
bar_chart_percent_group_by_stock()

更新

这似乎是VisualStudio代码中“引发异常”复选框的问题。当它被选中时,我看到上面描述的错误。我看到了我的柱状图

下面是您可以看到问题所在的最低限度的脚本

from pandas_datareader import data
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import math
import numpy as np
sns.set(style='darkgrid', context='talk', palette='Dark2')

Data = {'Country': ['USA','Canada','Germany','UK','France'],
        'GDP_Per_Capita': [45000,42000,52000,49000,47000]
       }

df2 = pd.DataFrame(Data,columns=['Country','GDP_Per_Capita'])
plot = df2.plot(x ='Country', y='GDP_Per_Capita', kind = 'bar')
print(plot)
plt.show()

Tags: toinimportpandasdataindexascount
1条回答
网友
1楼 · 发布于 2024-04-20 07:25:17

这似乎是VisualStudio代码中“引发异常”复选框的问题。当它被选中时,我看到上面描述的错误。我看到了我的柱状图

我认为python库中还存在其他一些问题,但我还没有弄清楚是什么或为什么

我已经找到了一份如上所述的工作

相关问题 更多 >