#python #pandas #size
#python #pandas #размер
Вопрос:
Я получил 2 csv-файла: размер file1
594,8 МБ, file2
1,0 ГБ
Но когда я пишу
df1 = pd.read_csv(file1)
df2 = pd.read_csv(file2)
print(sys.getsizeof(df1))
print(sys.getsizeof(df2))
Я получаю:
457048830
460467614
Почему размер файла DataFrame
IS так отличается от размера файла CSV?
И почему соотношение между 594,8 МБ и 1,0 ГБ (размер файла) и 457048830 и 460467614 не совпадает? (Или это то же самое, но так, что это такое?)
Ответ №1:
CSV-файл кодирует числа текстовым способом, разделяя их запятыми. То есть 10-значное число займет 10 байт данных. Это означает, что в зависимости от размера чисел, n
числа могут занимать от 2n
байтов до произвольного количества.
A DataFrame
загружает данные в целые числа, которые (как правило) хранятся более эффективными способами. Распространенным форматом является 32-разрядный формат с плавающей запятой, в котором каждое число хранится с использованием 4 байт.
Исходя из вышесказанного, я бы ожидал, что file1
и file2
примерно такое же количество чисел, но file2
содержит (как правило) числа, для представления которых требуется больше текста.
Например, два файла содержат 1, 2, 3, 4, ..., 100
и 1.0001, 1.0002, 1.0003, ..., 1.0100
оба содержат 100 чисел и будут примерно одинакового размера в Python. Однако при сохранении в виде текстового CSV последний будет намного больше.