У меня проблема с пандами, которые у меня не было несколько месяцев назад. Я пытаюсь взять набор данных из пользовательского ввода (используя tkinter) и помещать его в рамку данных pandas. Вот как выглядят данные, как:Pandas DataFrame не умеет читать данные
1.000000 03/27/2016 13:29:26.098 1431.778943 0.092089
1.000000 03/27/2016 13:29:26.298 1432.410517 0.078570
1.000000 03/27/2016 13:29:26.498 1431.905258 0.089538
1.000000 03/27/2016 13:29:26.698 1431.399999 0.080930
5.000000 03/28/2016 00:00:00.098 1289.422164 0.392945
25.000000 03/28/2016 00:00:00.298 1289.295849 0.145016
25.000000 03/28/2016 00:00:00.498 1289.295849 0.183149
25.000000 03/28/2016 00:00:00.698 1288.790590 0.175114
26.000000 03/28/2016 00:25:16.698 1302.053644 0.162170
.....
В 5 колонок установлены, но, как правило, где-то между 200 000 до 800 000 строк в наборе данных.
Вот мой код:
import pandas as pd
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename() #User selects file
file = pd.read_table(file_path, index_col=False)
df = pd.DataFrame(data=file, columns=['Measurement', 'Date', 'Time','CO2', 'Flow'], dtype=object)
print(file_path)
print(file)
print(df)
печати (file_path) выводит правильный путь, печать (файл) показывает все правильные данные, и печать (ДФ) показывает, что это:
Measurement Date Time CO2 Flow
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN
8 NaN NaN NaN NaN NaN
.......
Раньше я делал то же самое, но я потерял сценарий, над которым работал, и ему нужно было начать все заново. Он работал отлично, но я не уверен, что произошло. Я попробовал несколько вещей, чтобы исправить это:
- Изменение pd.read_table в pd.io.parsers.read_table
- Измененный индекс =, DTYPE = и другие свойства pd.DataFrame
- преобразовал файл в .csv и б pd.read_csv
- Сокращенный файл значительно
- Приготовить pd.Series с одной колонной и печати, что, но все равно было NaN для всех точек данных
Я могу легко генерировать случайный набор данных и превращать их в pd.DataFrame без проблем (я использовал df2 = DataFrame (np.random.randn (10, 5) columns = ['a', 'b', 'c', 'd', 'e']) в ipython и отображается правильно).
Я сделал массив numpy с теми же данными, и он работал нормально. Я хочу использовать панды, потому что, по-моему, это будет легче для моего анализа в долгосрочной перспективе. Я действительно надеюсь, что это что-то маленькое, чего я не хватает, но я работал над этим какое-то время, поэтому я готов попробовать что угодно.
Я думаю, что вы можете опустить 'ДФ = pd.DataFrame (данные = файл, столбцы = [ 'измерения', 'Дата', 'Time', 'CO2', 'Flow'], DTYPE = объект) ', потому что' file' является 'DataFrame'. – jezrael
Вы эффективно переиндексируете свой старый df, когда передаете его в качестве параметра данных в конструктор DataFrame, если вы передали массив np, тогда он будет работать: 'pd.DataFrame (data = file.значения, столбцы = ['Измерение', 'Дата', 'Время', 'СО2', 'Поток'], dtype = объект) 'Также если у вашего файла нет имен столбцов, вы обычно можете либо передать нужные имена в качестве параметра на 'read_table', но обычно вы должны сказать ему, что нет заголовка' header = None' – EdChum