Как сократить время чтения/записи в excel в панд python

#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.