Это примерно столько, сколько я мог бы сделать мой ответ.Важно понимать потребление памяти датафреймами и то, какие dtypes потребляют больше памяти.Я бы серьезно порекомендовал эту страницу для получения дополнительной информации о памяти.
Предположим, у меня есть небольшой кадр данных, который выглядит как эти числа:
Number Number2 Number3
0 1 "1" One
1 2 "2" Two
2 3 "3" Three
3 4 "4" Four
, и я хотелпроверьте dtype чисел:
print(df.dtypes)
>>> df.dtypes
Number int64
Number2 object
Number3 object
dtype: object
Мы можем видеть, что столбец 2 рассматривается как объект, даже если все в этом столбце является целым числом, заключенным в кавычки.В некоторых случаях вы можете рассматривать ваш int как строку (например, если вы пытаетесь выполнить какой-либо тип сопоставления строк), тогда вы не хотите преобразовывать тип из объекта в int.Но, скажем, в этом случае это не имеет значения, и вы в порядке с преобразованием.Давайте проверим использование памяти с помощью этой небольшой проверки памяти объектов pandas:
def mem_usage(pandas_obj):
if isinstance(pandas_obj,pd.DataFrame):
usage_b = pandas_obj.memory_usage(deep=True).sum()
else: # we assume if not a df it's a serie
usage_b = pandas_obj.memory(deep=True)
return "{:03.2f} B".format(usage_b)
print(mem_usage(df))
### >>> mem_usage(df)
### '459.00 B'
Допустим, я могу позволить изменить тип dtype с объекта на int (сначала нужно удалить кавычки):
df['Number2'] = df.Number2.str.replace('"', '')
df['Number2'] = df.Number2.astype(int)
print(df.dtypes)
### >>> df.dtypes
### Number int64
### Number2 int32
### Number3 object
### dtype: object
print(mem_usage(df))
### >>> mem_usage(df)
### '299.00 B'
df.to_csv('./Desktop/numbers_fixed.csv', index=False)
Вот так, изменив dtype, мы перешли с 459B памяти на 299B.Подумайте, если бы это был большой набор данных, который уменьшил бы объем памяти в 1,5 раза, просто изменив dtype.Я не говорю, что делать это произвольно, но если вы обрабатываете внешние данные или просто неправильно анализируете свой df, это может произойти.Целые числа или числа с плавающей запятой могут быть считаны как объекты, и вы увидите значительное сокращение памяти, просто изменив тип данных.Чтобы показать, что это относится к созданию файла, смотрите изображение: