【问题标题】:Percentage change to plot in histogram在直方图中绘制的百分比变化
【发布时间】:2016-12-12 16:15:10
【问题描述】:

我正在尝试绘制库存百分比变化的直方图 我的代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv("M:/Trading/1.JOZO/ALXN.csv")
dataframe = (data['Adj Close'])
zmena1 = (dataframe.pct_change(periods = 1)*100)
data["Zmena"] = zmena1
plt.hist(zmena1, bins = "auto", range = "auto" )
plt.show

但我得到一个错误:

 mn, mx = [mi + 0.0 for mi in range]

TypeError: Can't convert 'float' object to str implicitly

我试过str(zmena1),但可以得到它... 不知道如何通过这个...

【问题讨论】:

标签: python pandas matplotlib error-handling


【解决方案1】:

从 csv 文件的名称,我猜你的数据可以从雅虎财经中检索到,所以使用Remote Access datareader 我正在下载所有 2016 年的数据来玩:

import datetime
data = web.DataReader('ALXN', data_source='yahoo', 
                      start=datetime.datetime(2016, 1, 1))

现在我可以计算[0,100] 范围内的百分比变化

data['Zmena'] = data['Adj Close'].pct_change(periods=1)*100

从那里,我肯定会使用内置的DataFrame.hist 函数:

data['Zmena'].hist()


使用 plt.hist

如果您确实想使用plt.hist,则需要过滤掉NaN(不是数字),特别是您将始终将一个作为第一个条目:

print(data[['Adj Close','Zmena']].head())

             Adj Close     Zmena
Date                            
2016-01-04  184.679993       NaN
2016-01-05  184.899994  0.119126
2016-01-06  184.070007 -0.448884
2016-01-07  174.369995 -5.269741
2016-01-08  168.130005 -3.578592

所以,为了使用 plt.hist:

plt.hist(data.Zmena.dropna())

另一个问题是你指定了bins = "auto", range = "auto",如果你想默认,你真的不应该传递它们。请参阅pyplot.hist 处的两个参数的文档

【讨论】:

  • 这是它先生......不知怎的,作为一个新手忘记了这个内置功能......非常感谢你
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
相关资源
最近更新 更多