我有一个示例数据框,实际上它是一个更大的数据框,并且已根据12个不同的列进行了分组。一些组标签重合。
在使用Groupby将数据框分组后,我无法对其进行切片以进行打印。
我想在A列中绘制所有有car的组的输入和输出,并生成一个图例,以A和B的值标记它们。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df_test = pd.DataFrame({'A': ['car', 'car', 'car', 'car', 'car', 'car', 'plane', 'plane', 'plane', 'plane', 'plane', 'plane',],
'B': ['one','one', 'two', 'two', 'three','three', 'one', 'one', 'two','two', 'three','three',],
'Input1': np.random.randn(12),
'Output1': np.random.randn(12)})
print(df_test)
grouped = df_test.groupby(['A', 'B'])
fig, ax = plt.subplots()
grouped.plot(x='Input1', y='Output1', ax=ax, legend=False)
所以我在这里绘制所有组,但实际上我只想在A列中绘制包含car的组。
答案 0 :(得分:0)
尝试一下。 下面的代码是使用groupby之后的。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df_test = pd.DataFrame({'A': ['car', 'car', 'car', 'car', 'car', 'car', 'plane', 'plane', 'plane', 'plane', 'plane', 'plane',],
'B': ['one','one', 'two', 'two', 'three','three', 'one', 'one', 'two','two', 'three','three',],
'Input1': np.random.randn(12),
'Output1': np.random.randn(12)})
print(df_test)
grouped = df_test.groupby(['A', 'B'])
grouped=grouped.first().reset_index()
grouped=grouped.loc[grouped['A']=='car']
fig, ax = plt.subplots()
grouped.plot(x='Input1', y='Output1', ax=ax, legend=False)
plt.show()
如果您只想过滤A列中等于'car'
的值,则可以尝试以下代码。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df_test = pd.DataFrame({'A': ['car', 'car', 'car', 'car', 'car', 'car', 'plane', 'plane', 'plane', 'plane', 'plane', 'plane',],
'B': ['one','one', 'two', 'two', 'three','three', 'one', 'one', 'two','two', 'three','three',],
'Input1': np.random.randn(12),
'Output1': np.random.randn(12)})
print(df_test)
grouped=df_test.loc[df_test['A']=='car']
fig, ax = plt.subplots()
grouped.plot(x='Input1', y='Output1', ax=ax, legend=False)
plt.show()
更新: 也尝试下面的代码。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df_test = pd.DataFrame({'A': ['car', 'car', 'car', 'car', 'car', 'car', 'plane', 'plane', 'plane', 'plane', 'plane', 'plane',],
'B': ['one','one', 'two', 'two', 'three','three', 'one', 'one', 'two','two', 'three','three',],
'Input1': np.random.randn(12),
'Output1': np.random.randn(12)})
print(df_test)
grouped=df_test.loc[df_test['A']=='car']
grouped = grouped.groupby(['A','B'])
fig, ax = plt.subplots()
grouped.plot(x='Input1', y='Output1', ax=ax, legend=True)
plt.show()