gpt4 book ai didi

python - 可以根据 Pandas 中的唯一值绘制列的子集吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:00 25 4
gpt4 key购买 nike

[为了清晰起见,于 2019 年 10 月 22 日进行了编辑]

我正在学习如何使用 Pandas。我有一个大数据集,我想以各种方式绘制(线图)。这是一个模拟示例,其中包含列 DateSample LocationTest1Test2Test3(整数):

import itertools
import pandas as pd
import numpy as np

# Generate some data; covert dict to dataframe
MyDates = list(repeat(['1/1/19', '2/1/19', '3/1/19', '4/1/19', '5/1/19'], 5))
# repeat won't work if run from text editor
SampleSites = ['Site 1', 'Site 2', 'Site 3', 'Site 4', 'Site 5'] * 5
Test1 = list(randint(0, 10, 25))
Test2 = list(randint(0, 10, 25))
Test3 = list(randint(0, 10, 25))
MyData = {'Date': MyDates, 'Sample Location': SampleSites, 'Test 1': Test1, 'Test 2': Test2, 'Test 3': Test3}
DF1 = pd.DataFrame(MyData)
# Sometimes this doesn't work; not sure why.

我所看到的有关绘制 Pandas 数据框的所有内容都涉及使用切片和诸如 pivot_tablegroupby 之类的方法来组织数据,以便可以根据需要绘制。请参阅以下示例:

# General approach that I have seen others do, I would like a more concise way if possible:

# Plot "Test 1" results for all Sample Locations
DF2 = DF1.drop(labels = ['Test 2', 'Test 3'], axis = 1)
DF3 = DF2.pivot_table(index = 'Date', columns = 'Sample Location')
DF3.plot()

# Plot columns Test 1, Test 2, and Test 3 for Sample Location 'Site 1'
# Select subset of data from DF1 to plot
FilterSamples = ['Site 1']
# Slice data frame down to desired type
DF2 = DF1[DF1['Sample Location'].isin(FilterSamples)]
DF3 = DF2.reset_index(drop = True)
DF3.plot(x = 'Date', y = ['Test 1', 'Test 2', 'Test 3'])

这种方法看起来很麻烦,因为它似乎需要传递多个对象才能到达需要绘制数据的位置。

如果我能够有一种简洁的方法来从大型数据框中进行绘图,其中可以根据行中的相邻值过滤 x 和 y 值,那就太好了。例如,如果我可以编写如下内容,而不是过滤数据框以仅包含示例位置“站点 1”,那就太好了:

# pseudo-code example of what I would like to do:
# Only plots x values (date) of rows with Site 1 value in Sample Location column
# Only plots corresponding y values for column Test 1
DF1.plot (x = DF1.Date[DF1.Sample Location['Site 1']], y = DF1.Test1)

# Is something like this possible?

希望问题现在更清楚了。对于主要问题或我的代码的任何方面的任何建议/批评将不胜感激!

最佳答案

要在一张图中绘制多个图层,您可以直接使用 matplotlib 中的 pyplot:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(15, 10))
plt.plot(df.columnA,df.columnB,color='red')
plt.plot(df.columnA,df.columnC,color='blue')

plt.legend(["ColumnB","ColumnC"])

plt.show()

您可以通过这种方式轻松使用轴、颜色和图形设计。也可以直接操作而不直接生成新的dataframe如:plt.plot(df.columnA,df.columnA-df.columnB) 例如

关于python - 可以根据 Pandas 中的唯一值绘制列的子集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58453479/

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