#python #excel #pandas
Вопрос:
У меня есть 640 000 строк данных в Excel.
Я хочу добавить несколько строк к данным, поэтому я использовал pd.read_excel
и pd.concat([excel, some_data])
.
После этого я обычно df.to_excel()
писал ответ в excel.
Но read_excel
это занимает много времени, около 3 минут, и to_excel
это тоже.
Как я могу это исправить?
def update_mecab(new_word_list):
user_dicpath='C:\mecab\user-dic\custom.csv'
dictionary=pd.read_excel('./first_dictionary.xlsx')
dictionary=pd.concat([dictionary, new_word_list])
part_names= {
'일반 명사' : 'NNG',
'고유 명사' : 'NNP',
'의존 명사' : 'NNB',
'수사' : 'NR',
'대명사' : 'NP',
'동사' : 'VV',
'형용사' : 'VA',
'보조 용언' : 'VX',
'관형사' : 'MM',
'일반 부사' : 'MAG',
'접속 부사' : 'MAJ',
'감탄사' : 'IC'
}
new_word_pt=new_word_list.replace({"part":part_names})
user_dict=open(user_dicpath, 'a', encoding="UTF-8")
for index, item in new_word_pt.iterrows() :
custom_word=item['word'] ',*,*,*,' item['part'] ',*,T,' item['word'] ',*,*,*,*,*n'
user_dict.write(custom_word)
user_dict.close()
del user_dict
dictionary=dictionary.reset_index()
dictionary=dictionary[['word', 'part']]
dictionary.to_excel('first_dictionary.xlsx', sheet_name = "Sheet_1", index=None)
subprocess.call("powershell C:\mecab\add-userdic-win.ps1")
Комментарии:
1. Вы пробовали использовать CSV вместо xlsx? Формат данных Excel, естественно, более громоздкий, и оборудование, необходимое для его анализа и записи, будет более тяжелым. Кроме того,
pd.read_csv()
он очень оптимизирован, в тоpd.read_excel()
время как опирается на дополнительные библиотеки чтения xlsx, такие какopenpyxl
. Если проблема действительно заключается в скорости чтения/записи, то вы мало что можете с этим поделать, не используя более быстрый язык или более оптимизированную библиотеку2. Похоже также, что вы хотите сократить не время добавления (как указано в вопросе), а время чтения и записи в excel.