- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码,用于跟踪特定交付晚了多长时间以及晚了多长时间。我将它们分类为:提前交付、准时交付和延迟交付。如果我包含所有 Material 编号,我就能够绘制这些结果的图表。但是,当我指定 Material 编号时,我遇到了错误(如下所列),我还提供了终端中确切打印的内容。似乎数据框创建了两行标记不同的东西,并从那里计数,因此我无法绘制图表,因为有两个值,那么我如何修复我的代码以简单地提取“计数”并使用该数字用于绘制条形图
import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
Material= 'Material'
DELIVERY_DATE = 'Delivery Date'
DESIRED_DATE = 'source desired delivery date'
DELAYED_DAYS = 'Delayed Days'
StartYear = input("Start Year? ")
StartYear = int(StartYear)
EndYear = input("End Year? ")
EndYear = int(EndYear)
DELIVERY_DATE = 'Delivery Date'
DESIRED_DATE = 'source desired delivery date'
DELAYED_DAYS = 'Delayed Days'
df = pd.read_csv('otdo.csv')
df['Delivery Date'] = pd.to_datetime(df['Delivery Date'], format='%m/%d/%Y')
df['source desired delivery date'] = pd.to_datetime(df['source desired delivery date'], format='%m/%d/%Y')
late_threshold = pd.Timedelta(days=0)
late_threshold2 = pd.Timedelta(days=10)
df[DELIVERY_DATE] = pd.to_datetime(df[DELIVERY_DATE])
df[DESIRED_DATE] = pd.to_datetime(df[DESIRED_DATE])
df[DELAYED_DAYS] = df[DELIVERY_DATE] - df[DESIRED_DATE]
df2 = df[(df['Delivery Date'].dt.year >= int(StartYear)) & (df['Delivery Date'].dt.year <= int(EndYear))]
df3 = df2[ df2[DELAYED_DAYS] > late_threshold]
df3 = df3[late_threshold2 > df3[DELAYED_DAYS]]
df3 = df3.loc[df['Material'].str.contains('20080810', na=False)]
df4 = df2[ df2[DELAYED_DAYS] > late_threshold2]
df4 = df4.loc[df['Material'].str.contains('20080810', na=False)]
df5 = df2[df2[DELAYED_DAYS] <= late_threshold]
df5 = df5.loc[df['Material'].str.contains('20080810', na=False)]
df6 = df2.loc[df['Material'].str.contains('20080810', na=False)]
df7 = df2[ df2[DELAYED_DAYS] > late_threshold]
df7 = df7[late_threshold2 > df7[DELAYED_DAYS]]
df8 = df2[ df2[DELAYED_DAYS] > late_threshold2]
df9 = df2[df2[DELAYED_DAYS] <= late_threshold]
zero = df2.count()
zero2 = df3.count()
zero3 = df4.count()
zero4 = df5.count()
zero5 = df7.count()
zero7 = df9.count()
hey = zero7.iloc[1:1]
print(hey)
print(zero7)
objects = ('1', '2', '3')
y_pos = np.arange(len(objects))
values = [zero5, zero4, zero7]
plt.bar(y_pos, values, align='center', alpha=0.2)
plt.xticks(y_pos, objects)
plt.show()
这是终端中生成的内容:
Start Year? 2014
End Year? 2018
Series([], dtype: int64)
Material 4936
Delayed Days 4936
dtype: int64
Traceback (most recent call last):
File "C:\Users\khalha\eclipse-workspace\Test3\Test3\gagada.py", line 118, in <module>
plt.bar(y_pos, values, align='center', alpha=0.2)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\pyplot.py", line 2770, in bar
ret = ax.bar(*args, **kwargs)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\__init__.py", line 1855, in inner
return func(ax, *args, **kwargs)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\axes\_axes.py", line 2233, in bar
np.atleast_1d(x), height, width, y, linewidth)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\stride_tricks.py", line 249, in broadcast_arrays
shape = _broadcast_shape(*args)
File "C:\Users\khalha\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\lib\stride_tricks.py", line 184, in _broadcast_shape
b = np.broadcast(*args[:32])
ValueError: shape mismatch: objects cannot be broadcast to a single shape
CSV 文件:
Material Delivery Date source desired delivery date
3334678 12/31/2014 12/31/2014
233433 12/31/2014 12/31/2014
3434343 1/5/2015 1/5/2015
3334567 1/5/2015 1/6/2015
546456 2/11/2015 2/21/2015
221295 4/10/2015 4/10/2015
最佳答案
错误消息指出
plt.bar(y_pos, values...
matplotlib 期望一维数组作为条形高度,但使用 values
您可以提供一个数据帧列表,该列表无法广播到简单的一维数组。
您应该使用标量列表来完成这项工作。
例如
values = [zero5.Material, zero4.Material, zero7.Material]
如果我理解你的数据模型正确的话。
请注意,如果您想要绘制两个数组,即出于比较原因在每个 y_pos 绘制两个条形,可以通过调用 plt.bar(...)
两次来完成。首先使用一个数组,然后使用另一个数组,向 y-pos 数组添加一些 y 偏移量。请参阅this举个例子。
但是 - 我建议您不要创建太多从 csv 导入派生的进一步数据帧,而是创建一个数据帧,其中包含取决于您的阈值时间的 bool 结果,大概已经转换为“int”以计算总和,例如:
df2['thresh1'] = (df2[DELAYED_DAYS] > late_threshold).astype(int)
df2['thresh2'] = (df2[DELAYED_DAYS] > late_threshold).astype(int)
这使您有机会在一行中进行计算
zeros = df2.sum()
你所谓的零
。
那么第一个测试可能是
zeros.plot(kind='bar')
关于python - Pandas 数据帧,ValueError : shape mismatch: objects cannot be broadcast to a single shape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282194/
我正在尝试并行运行具有循环返回值的函数。但它似乎停留在 results = pool.map(algorithm_file.foo, population) 在 for 循环的第二次迭代中 r
Serving Flask 应用程序“服务器”(延迟加载) 环境:生产警告:这是一个开发服务器。不要在生产部署中使用它。请改用生产 WSGI 服务器。 Debug模式:开启 在 http://0.0.
我使用“product.pricelist”模型中的 get_product_price_rule() 函数。我的代码是: price = self._get_display_price(produ
我收到以下错误: Traceback (most recent call last): File "/home/odroid/trackAndFollow/getPositions.py", line
我正在尝试采用机器学习方法,但遇到了一些问题。这是我的代码: import sys import scipy import numpy import matplotlib import pandas
我尝试使用 tensorflow 1.4.0 对我的原始记录进行分类。过程如下。 拳头:读取图片和标签,输出“tfrecord”格式的文件。第二:读取tf记录和训练 编写tfrecord脚本是 !/u
我是新手,所以需要任何帮助,当我要求一个例子时,我的教授给我了这段代码,我希望有一个工作模型...... from numpy import loadtxt import numpy as np fr
我无法弄清楚为什么会出现此 ValueError...为了提供一些上下文,我正在使用 requests、BeautifulSoup 和 json 与 python 来抓取站点 json 数据。 我不确
我已经尝试使用这两个循环以及列表理解。即使我正在尝试将数字转换为列表中的整型,两者都无法解析整数。
我已经尝试使用这两个循环以及列表理解。即使我正在尝试将数字转换为列表中的整型,两者都无法解析整数。
我只有四个星期的 Python 经验。使用 Tkinter 创建一个工具,将新的公司 Logo 粘贴到现有图像之上。 下面的方法是获取给定目录中的所有图像并将新 Logo 粘贴到初始级别。现有图像、编
我只有四个星期的 Python 经验。使用 Tkinter 创建一个工具,将新的公司 Logo 粘贴到现有图像之上。 下面的方法是获取给定目录中的所有图像并将新 Logo 粘贴到初始级别。现有图像、编
我在尝试在 Keras 2.0.8、Python 3.6.1 和 Tensorflow 后端中训练模型时遇到问题。 错误消息: ValueError: Error when checking targ
我已经尝试使用这两个循环以及列表理解。即使我正在尝试将数字转换为列表中的整型,两者都无法解析整数。
我有这段代码: while True: try: start = int(input("Starting number: ")) fin = int(i
我是 python 的初学者编码员,试图制作一个“模具滚筒”,您可以在其中选择模具的大小,它在我的代码的第 20 行返回此错误 import sys import random import geto
我有以下代码: import fxcmpy import pandas as pd from pandas import datetime from pandas import DataFrame a
我正在尝试使用 django 和 python 制作一个博客应用程序。我也在尝试使用 s3 存储桶进行存储,使用 heroku 进行部署。我正在学习 coreymschafer 的在线教程。我正在按照
我创建了一个 numpy 数组(考虑输入数据)并想更改顺序(一些数值运算后的输出数据)。在使用转换后的数组时,我遇到错误并找到了根本原因。请在下面找到详细信息并使用 numpy 版本 1.19.1 i
我已经引用了之前的查询 All arguments should have the same length plotly但仍然没有得到我的问题的答案。 我有一个黄金价格数据集。 Date
我是一名优秀的程序员,十分优秀!