Я пытаюсь правильно импортировать данные из файла с разделителями-пробелами в кадр данных pandas, чтобы я мог правильно его построить. Мой файл данных выглядит так:
Vmeas -5.00E+000 -4.50E+000 -4.00E+000 -3.50E+000 ...
vfd3051 -3.20E-008 -1.49E-009 1.38E-008 -1.17E-008 ...
vfd3151 -3.71E-008 -6.58E-009 -6.58E-009 -6.58E-009 ...
vfd3251 -4.73E-008 3.59E-009 8.68E-009 -1.68E-008 ...
vfd3351 -2.18E-008 -3.71E-008 3.60E-009 -3.20E-008 ...
Таким образом, место тестирования изначально находится в строках, а в столбцах напряжение увеличивается вправо до 20 В.
Мой код для чтения файла данных в кадр данных:
if __name__ == '__main__':
file_path = str(input("Enter the filename to open: "))
save = str(input('Do you wish to save a pdf of the IV plots? (y/n): '))
df = pd.read_csv(file_path, index_col="Vmeas", delim_whitespace=True, header=0)
df = df.T
df.reset_index(inplace=True)
df.index.names = ['Voltage']
df.columns.names = ['Die_numbers']
df.drop('index',axis=1, inplace=True)
make_plots(df, save)
Фактическое построение выполняется:
def make_plots(df, save):
voltage = np.arange(-5, 20, 0.5)
plt.figure(figsize=(10, 7))
for col in df:
plt.plot(voltage, col, legend=False)
plt.show()
Сначала я столкнулся с проблемами, когда напряжение обрабатывается пандами как строка, и поскольку панды плохо работают с индексами с плавающей запятой. Сначала мой график зависимости тока от напряжения на диоде начинался с нуля. (http://i.imgur.com/wgIZCyq.jpg) Затем я повторно проиндексировал его, но последующее построение графика все равно не сработало. Теперь я переиндексировал фрейм данных, удалил старый столбец индекса, и когда я проверяю df.head(), все выглядит правильно:
Die_numbers vfd3051 vfd3151 vfd3251 vfd3351
Voltage
0 -3.202241e-08 -3.711351e-08 -4.728576e-08 -2.184733e-08
1 -1.493095e-09 -6.580329e-09 3.594383e-09 -3.710431e-08
2 1.377107e-08 -6.581644e-09 8.683344e-09 3.595368e-09
за исключением того, что теперь я продолжаю сталкиваться с ValueError в mpl. Я думаю, что это связано с тем, что значения col являются строками, а не числами с плавающей запятой, что я не понимаю, потому что раньше он правильно печатал токи.
Признаться, я новичок в пандах, но кажется, что меня на каждом шагу останавливают, по невежеству, несомненно, но это становится утомительным. Есть лучший способ сделать это? Возможно, мне следует просто игнорировать первую строку файла журнала? Могу ли я преобразовать экспоненциальную запись во время чтения файла? Продолжать отключаться?
Спасибо.
df.info(): Int64Index: 51 запись, от 0 до 50 Столбцы: 1092 записи, от vfd3051 до vfd6824 dtypes: float64(1092)
Кажется, все загружается в pandas правильно, но mpl что-то не нравится в данных. Столбцы являются числами с плавающей запятой, я не использую индекс целых чисел. Если бы имена столбцов добавлялись в качестве моей первой строки, столбцы рассматривались бы как тип str или obj. Ошибка:
Traceback (most recent call last):
File "D:\Python\el_plot_top_10\IV_plot_all.py", line 51, in <module>
make_plots(df, save)
File "D:\Python\el_plot_top_10\IV_plot_all.py", line 21, in make_plots
plt.plot(voltage, col, legend=False)
File "C:\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2987, in plot
ret = ax.plot(*args, **kwargs)
File "C:\Anaconda3\lib\site-packages\matplotlib\axes.py", line 4139, in plot
for line in self._get_lines(*args, **kwargs):
File "C:\Anaconda3\lib\site-packages\matplotlib\axes.py", line 319, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "C:\Anaconda3\lib\site-packages\matplotlib\axes.py", line 278, in _plot_args
linestyle, marker, color = _process_plot_format(tup[-1])
File "C:\Anaconda3\lib\site-packages\matplotlib\axes.py", line 131, in _process_plot_format
'Unrecognized character %c in format string' % c)
ValueError: Unrecognized character f in format string
df.info()
. - person Jeff   schedule 12.08.2014