У меня возникают проблемы с производительностью, преобразующие dataframe в csv.Pandas to_csv медленнее с кодировкой?
import numpy as np
import pandas as pd
from time import time
t =time();_=pd.DataFrame(np.random.sample((10000,10))).to_csv(encoding=None); print time()-t
0.159129142761
t =time();_=pd.DataFrame(np.random.sample((10000,10))).to_csv(encoding='utf8'); print time()-t
1.16141009331
t =time();_=pd.DataFrame(np.random.sample((10000,10))).to_csv(encoding='ascii'); print time()-t
1.13821101189
Почему указание типа кодировки сильно повлияет на производительность этого метода? В моем конкретном случае я предпочел бы использовать значение по умолчанию (None), но поскольку в ядре данных, который мне нужно преобразовать, содержатся некоторые специальные символы (китайский), я не могу использовать кодировку по умолчанию, которая имеет превосходную производительность.
По-видимому, кодировка по умолчанию - «ascii», но при выборе имеет ту же производительность, что и utf8, которая является той, которая мне нужна, чтобы использовать ручку без английского.
Любая идея, как я могу справиться со скоростью и обойти эту проблему?
Я использую pandas 0.16.0 и Python 2.7.9.
EDIT:
Я обновление до панды 0.16.2 согласно rth предложение, и я получаю лучше тайминги
import pandas as pd
import numpy as np
x = pd.DataFrame(np.random.sample((10000,10)))
%timeit x.copy().to_csv(encoding='ascii')
%timeit x.copy().to_csv()
%timeit x.copy().to_csv(encoding='utf8')
10 loops, best of 3: 160 ms per loop
10 loops, best of 3: 73.7 ms per loop
10 loops, best of 3: 158 ms per loop
Еще наполовину медленнее указав кодировку, чем при использовании по умолчанию. Очевидно, лучше, чем предыдущий сценарий, используя версию 0.16.0, но все же ощутимое различие.
Я все еще хочу понять, если это ошибка, и как я могу ее улучшить ... в моем случае это разница между 10 или 20 минутами!
Да .. с очень небольшим изменением, но воспроизводимым. –