我刚接触Pandas,但是通常我要处理数据(当所有列大小相等时),我先建立np.zeros(count)矩阵,然后使用for循环从文本中填充数据文件(np.genfromtxt())在matplotlib中进行绘图和分析。
但是,我现在正在尝试通过CSV文件在同一图上对不同大小的列进行类似的分析。
例如:
data.csv:
A B C D E F
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6
4 5
df = pandas.read_csv('data.csv')
ax = df.plot(x = 'A', y = 'B')
df.plot(x = 'C', y = 'D', ax = ax)
df.plot(x = 'E', y = 'F', ax = ax)
此代码在同一张图上绘制了前两个图,但是其余信息丢失了(还有很多不匹配大小的列,但是我要绘制的x / y列都大小相同)
是否有更简单的方法来完成所有这些工作?谢谢!
答案 0 :(得分:0)
以下是您可以概括解决方案的方法:
我编辑了答案以添加错误处理。如果最后一列很孤单,它仍然可以使用。
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
data = {
'A' : [1, 2, 3, 4],
'B' : [2, 3, 4, 5],
'C' : [3, 4, 5, np.nan],
'D' : [4, 5, 6, np.nan],
'E' : [5, 6, np.nan, np.nan],
'F' : [6, 7, np.nan, np.nan]
}
df = pd.DataFrame(data)
def Chris(df):
ax = df.plot(x='A', y='B')
df.plot(x='C', y='D', ax=ax)
df.plot(x='E', y='F', ax=ax)
plt.show()
def IMCoins(df):
fig, ax = plt.subplots()
try:
for idx in range(0, df.shape[1], 2):
df.plot(x = df.columns[idx],
y = df.columns[idx + 1],
ax= ax)
except IndexError:
print('Index Error: Log the error.')
plt.show()
Chris(df)
IMCoins(df)