gpt4 book ai didi

python - 根据用户输入绘制特定列

转载 作者:行者123 更新时间:2023-12-03 20:02:39 24 4
gpt4 key购买 nike

我有一个具有以下设置的数据框:

      a     c     g     s
Ind b d t d
0 11 12 22 33
1 13 14 44 101

目标是通过 GUI 接收来自用户的输入,将输入保存为列表并将其与数据帧中的标题列表进行比较。如果两者匹配,则绘制它们匹配的列(该列将是 y 轴,索引将是 x 轴)。

例如,如果用户选择 [('c','d')]然后我想要代码来绘制该列。这是我到目前为止所拥有的。
df = pd.read_csv('foo.csv',sep=r'\s*,\s*', encoding='ascii', engine='python')
header_list = [('a','b'),('c','d'),('g','t'),('s','d')]
user_Input_list = [('c','d')]
sub_list = []

for contents in header_list:
for contents2 in user_Input_list:
if contents == contents2:
ax = df.reset_index().plot(x='Ind', y=x[header_list], kind='bar')
for p in ax.patches:
ax.annotate('{:.2E}'.format(Decimal(str(p.get_height()))),
(p.get_x(),p.get_height()))
plt.tight_layout()
plt.show()

我认为问题在于我如何尝试使用 y=x[header_list] 选择 y 轴.

编辑

这是我运行上述代码时收到的错误消息。

Traceback (most recent call last):
File "/home/JM9/PycharmProjects/subfolder/subfolder.py", line 360, in <module>
ax = x.reset_index().plot(x='Ind', y=x[header_list], kind='bar')
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/plotting/_core.py", line 780, in __call__
data = data[y].copy()
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/core/frame.py", line 2982, in __getitem__
return self._getitem_frame(key)
File "/home/JM9/PycharmProjects/subfolder/venv/lib/python3.6/site-packages/pandas/core/frame.py", line 3081, in _getitem_frame
raise ValueError("Must pass DataFrame with boolean values only")
ValueError: Must pass DataFrame with boolean values only

最佳答案

我在弄清楚您的示例代码时遇到了麻烦,可以帮助解决问题的一件事是重新创建一个更简单的版本,而不是难以处理的列名。

import random
import pandas as pd

data={
'a': [random.randint(0, 50) for i in range(4)],
'b': [random.randint(0, 50) for i in range(4)],
'c': [random.randint(0, 50) for i in range(4)]
}

df = pd.DataFrame(data)
df.index = df.index.rename('Ind')

user_input = 'b'

if user_input in df.columns:
ax = df[user_input].plot(x='Ind', kind='bar')


对您有用的一些要点:(a) 您可以执行简单的测试而不是循环,以查看用户的输入是否等于数据框列 ( if user_input in df: ) 和 (b) 您可以调用 .plot()针对个别列。

编辑:更改 'b'user_input

关于python - 根据用户输入绘制特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59741851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com