2015-07-16 2 views
1

У меня есть блок данных измерений из эксперимента.Как я могу равномерно передавать данные даты из фрейма данных?

enter image description here

Я могу легко построить данные из кадра данных с помощью панд. Вот результат. enter image description here

Даты равномерно распределены по оси, но на самом деле они не равномерно распределены друг от друга. Как я могу получить точное представление времени между измерениями?

Вот мой код для построения кадра данных:

import pandas as pd 
import numpy as np 
import seaborn as sns 
import matplotlib.pyplot as plt 

normal_df= pd.DataFrame(normal, columns = cols, index = rows[2::]) 
print normal_df 

#Write the data frame to an xlsx file 

normal_df.to_excel(csv_file[0:-4] + '_Normalized_Survival.xlsx') 

avg = normal_df.mean() 

errors = normal_df.sem() 

avg.plot(marker = 'v',yerr = errors) 
plt.title('Mean Survival with Standard Error',fontsize = 20) 
plt.xticks(fontsize = 12,rotation = 45) 
plt.yticks(fontsize = 12) 
plt.xlabel('Time',fontsize = 18) 
plt.ylabel('% Survival',fontsize = 18) 
plt.xlim([0,6.1]) 
plt.legend(['Survival']) 
plt.show() 

ответ

2

Вот один варианта, вы можете попробовать, выполняя операции со строками для извлечения целого дня и установку индекса быть полученным значение

In [10]: cpy = [100, 89, 84, 73, 65, 6, 0] 

In [11]: days = ['Day 1','Day 2','Day 3','Day 6','Day 9','Day 14','Day 16'] 

In [12]: df = pd.DataFrame({'day':days,'val':cpy}) 

In [13]: df['dayint'] = df.day.apply(lambda x : int(x.split(' ')[-1])) 

In [14]: df.set_index(df.dayint, inplace=True) 

In [15]: df.val.plot() 

In [16]: plt.show() 

Example Plot