Я разбираю данные из большого CSV размером 800 ГБ. Для каждой строки данных я сохраняю это как фрейм данных pandas.
readcsvfile = csv.reader(csvfile)
for i, line in readcsvfile:
# parse create dictionary of key:value pairs by csv field:value, "dictionary_line"
# save as pandas dataframe
df = pd.DataFrame(dictionary_line, index=[i])
Теперь я хотел бы сохранить это в формате HDF5 и запросить h5, как если бы это был весь файл csv.
import pandas as pd
store = pd.HDFStore("pathname/file.h5")
hdf5_key = "single_key"
csv_columns = ["COL1", "COL2", "COL3", "COL4",..., "COL55"]
До сих пор мой подход был таков:
import pandas as pd
store = pd.HDFStore("pathname/file.h5")
hdf5_key = "single_key"
csv_columns = ["COL1", "COL2", "COL3", "COL4",..., "COL55"]
readcsvfile = csv.reader(csvfile)
for i, line in readcsvfile:
# parse create dictionary of key:value pairs by csv field:value, "dictionary_line"
# save as pandas dataframe
df = pd.DataFrame(dictionary_line, index=[i])
store.append(hdf5_key, df, data_columns=csv_columns, index=False)
То есть я пытаюсь сохранить каждый фрейм данных df
в HDF5 под одним ключом. Однако это не удается:
Attribute 'superblocksize' does not exist in node: '/hdf5_key/_i_table/index'
Итак, я мог бы сначала попытаться сохранить все в одном фрейме данных pandas, т.е.
import pandas as pd
store = pd.HDFStore("pathname/file.h5")
hdf5_key = "single_key"
csv_columns = ["COL1", "COL2", "COL3", "COL4",..., "COL55"]
readcsvfile = csv.reader(csvfile)
total_df = pd.DataFrame()
for i, line in readcsvfile:
# parse create dictionary of key:value pairs by csv field:value, "dictionary_line"
# save as pandas dataframe
df = pd.DataFrame(dictionary_line, index=[i])
total_df = pd.concat([total_df, df]) # creates one big CSV
и теперь сохраняем в формате HDF5
store.append(hdf5_key, total_df, data_columns=csv_columns, index=False)
Однако я не думаю, что у меня есть ОЗУ / хранилище для сохранения всех строк csv в total_df
в формате HDF5.
Итак, как мне добавить каждый «однострочный» df в HDF5, чтобы он получился одним большим фреймом данных (как исходный csv)?
РЕДАКТИРОВАТЬ: Вот конкретный пример файла csv с разными типами данных:
order start end value
1 1342 1357 category1
1 1459 1489 category7
1 1572 1601 category23
1 1587 1599 category2
1 1591 1639 category1
....
15 792 813 category13
15 892 913 category5
....
pandas.read_csv()
с аргументомchunksize
? - person HYRY   schedule 09.10.2016pandas.read_csv()
, и сохранить проанализированные строки csv в HDF5 по частям? Вы разбираете 10 000 строк, сохраняете в HDF5 под одной группой / ключом и продолжаете. - person ShanZhengYang   schedule 09.10.2016store.append()
должно работать, можете ли вы опубликовать тестовые данные и тестовый код, чтобы воспроизвести проблему? - person HYRY   schedule 09.10.2016Attribute 'superblocksize' does not exist in node: '/hdf5_key/_i_table/index'
- person ShanZhengYang   schedule 09.10.2016