我有这样一个数据框:
frame = {'Date' : ['3-Mar', '20-Mar', '20-Apr', '21-Apr', '29-Apr', '7-May', '30-May', '31-May', '7-Jun', '16-Jun',
'1-Jul', '2-Jul', '10-Jul'],
'Test_1' : [0.5840, 0.8159, 0.7789, 0.7665, 0.8510, 0.7428, 'None', 0.6820, 0.8714, 0.8902, 'mraky', 0.8289, 0.6877],
'Test_2' : [0.6196, 0.8291, 0.7686, 0.7848, 0.9935, 0.7406, 'None', 0.6952, 0.6952, 0.6952, 'None', 0.8119, 'None']}
以及一些没有值的测试数组。我想做一个意大利面条图。
问题是,当以字符串形式(它们没有按时间顺序排列)或者我将其更改为日期格式时,seaborn shuffle的“ date”值/项采用字符串形式:
frame['Date'] = pd.to_datetime(frame['Date'], format='%d-%b', errors='ignore')
是的,我可以用相邻值的平均值代替None值,但是还有另一种方法吗?
THX!
答案 0 :(得分:0)
因此,您似乎正在尝试从两个不同的时间序列中绘制规则图。
看起来DF中也包含非数值。
现在不清楚是要连续图(线)还是要在没有数值数据的点上“断开”。
为了使解决方案简单,请假设您不介意连续行。
因此,您需要做的是
定义过滤功能:
def is_digit (value):
try:
float(value)
return True
except:
return False
将其应用于您的数据框:
data_1 = df.loc[df.Test_1.map(lambda X: is_digit(X))]
data_2 = df.loc[df.Test_2.map(lambda X: is_digit(X))]
图:
X1 = data_1.Date
y1 = data_1.Test_1
X2 = data_2.Date
y2 = data_2.Test_2
plt.plot(X1,y1)
plt.plot(X2,y2)
plt.xticks(rotation=45)
样本(也很丑陋)结果:
可能的改进:
制作间隔均匀的日期数组