【发布时间】:2016-08-28 01:33:31
【问题描述】:
我有以下数据框:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x = np.arange(10)
x = np.concatenate((x,x))
y = []
for i in range(2):
y.append(np.random.random_integers(0,10,20))
d = {'A': [(x[i], y[0][i]) for i in range(20)],
'B': [(x[i], y[1][i]) for i in range(20)]}
df = pd.DataFrame(d, index = list('aaaaaaaaaabbbbbbbbbb'))
df
A B
a (0, 2) (0, 10)
a (1, 0) (1, 8)
a (2, 3) (2, 8)
a (3, 7) (3, 8)
a (4, 8) (4, 10)
a (5, 2) (5, 0)
a (6, 1) (6, 4)
a (7, 3) (7, 9)
a (8, 4) (8, 4)
a (9, 4) (9, 10)
b (0, 0) (0, 3)
b (1, 2) (1, 10)
b (2, 8) (2, 3)
b (3, 1) (3, 7)
b (4, 6) (4, 1)
b (5, 8) (5, 3)
b (6, 1) (6, 4)
b (7, 1) (7, 1)
b (8, 2) (8, 7)
b (9, 9) (9, 3)
如何制作以下情节?
绘图 1 位于“A”列,2 行(一行用于索引 = a,另一行用于索引 = b),x 值是元组的第一个元素。 y 值是元组的第二个元素。
情节 2 在“B”列上,其余与情节 1 相同。
我不知道如何从数据框中的元组中提取值。
另外,groupby 在这种情况下会有帮助吗?
实际上,我有大约一千列数据,5 组,每组约 500 行。所以我正在寻找一种快速的方法来解决这个问题(数据框大小~2500 x 1000)
非常感谢
【问题讨论】:
-
您可能需要摆弄一下,但像
np.rollaxis(np.vstack(df.values.flatten()).reshape(2, 20, 2), 2)这样的东西可以为您提供一个可以轻松索引的 3D 数组,以便您准确指定要绘制的数据(并且可能,您可以使该行更短且更具可读性)。
标签: python pandas matplotlib plot tuples