pandas 在Python中绘制高于阈值的值

mwyxok5s  于 2022-12-09  发布在  Python
关注(0)|答案(2)|浏览(133)

使用Pandas Dataframe 绘制高于设定阈值的值时出现问题。
我有一个 Dataframe ,有21453行和20列,其中一列只有1和0值。我尝试使用以下代码绘制该列:
第一个
但得到以下错误:

x and y must have same first dimension, but have shapes (21453,) and (9,)

对于如何解决这个问题有什么建议吗?

s3fp2yjn

s3fp2yjn1#

错误可能是plt.plot(df_smooth['Time'], lst1)这一行的结果。虽然lst 1是df_smooth[Time]的子集,但df_smooth['Time']是整个序列。
我会做的解决方案是也构建一个过滤的x版本,例如-

lst_X = []
lst_Y = []
for x in range(0, len(df)): 
    if(df_smooth['Active'][x] == 1):
        lst_X.append(df_smooth['Time'][x])
        lst_Y.append(df_smooth['Time'][x])

另一种选择是构建子 Dataframe -

sub_df = df_smooth[df_smooth['Active']==1]
plt.plot(sub_df['Time'], sub_df['Time'])

(假设正确的列作为Y列是Time,否则就用正确的列代替它)

oxosxuxt

oxosxuxt2#

看起来您试图使用plt.plot()函数绘制两个不同的数据序列,这会导致错误,因为plt.plot()期望两个序列具有相同的长度。
在绘制两个数据序列之前,需要确保它们的长度相同。一种方法是创建一个新的列表,其中包含与df_smooth['Time']数据序列相同数量的元素,然后用lst1数据序列中的相应值填充该列表。

# Create a new list with the same length as the 'Time' data series
lst2 = [0] * len(df_smooth['Time'])

# Loop through the 'lst1' data series and copy the values to the corresponding
# indices in the 'lst2' data series
for x in range(0, len(lst1)):
    lst2[x] = lst1[x]

# Plot the 'Time' and 'lst2' data series using the plt.plot() function
plt.plot(df_smooth['Time'], df_smooth['CH1'])
plt.plot(df_smooth['Time'], lst2)

我想这应该可以。

相关问题