Python BOT mengekstrak lajur panjang daripada helaian Excel dan cipta kerangka data untuk mengkatalogkan beberapa nombor daripada fail lain

WBOY
Lepaskan: 2024-02-10 18:00:06
ke hadapan
718 orang telah melayarinya

Python BOT 从 Excel 工作表中提取长列并创建一个数据框来对另一个文件中的一些数字进行编目

Kandungan soalan

Saya perlu mencipta robot Python untuk mengekstrak lajur C daripada fail Excel 1, helaian 1 dan mengkatalogkannya dalam fail 2 dan mengira dari 0.00 hingga 0.99, dari 1.00 hingga 1.99 dsb. Jumlah nombor. 12. Semua nombor di atas 12 dikodkan ke baris terakhir. Kemudian saya perlu mengira jumlah semua nombor.

Saya cuba menulis beberapa kod tetapi ia tidak menulis apa-apa pada fail Excel.


Jawapan betul


Anda boleh mencuba kaedah berikut;

  1. Baca fail data excel (fail excel 1) dan pilih hanya lajur yang diperlukan ("lajur c").
  2. Buat tatasusunan nilai 0.00 - 0.99, 1.00 - 1.99, 2.00 - 2.99, 3.00 - 3.99 (sehingga 12) dan gunakannya untuk mencipta bingkai data baharu (df_write), kumpulkan nilai dalam bingkai data ke dalam julat tatasusunan. Dapatkan kiraan untuk setiap julat.
  3. Kira nilai lebih daripada 12 dan tambahkannya pada df_write sebagai baris baharu.
  4. Jumlah semua nilai dalam bingkai data dan tambahkannya sebagai baris baharu pada df_write.
  5. Tulis bingkai data untuk cemerlang. Dalam contoh, xlsxwriter digunakan sebagai enjin, yang bermaksud bahawa buku kerja (fail katalog) dibuat/ditulis ganti setiap kali kod dijalankan.
  6. Data/format lain boleh dimasukkan ke dalam jadual. Sebagai contoh, tukar teks dalam sel dan tambahkan formula untuk mengira jumlah bilangan semua nilai julat terkumpul, yang sepatutnya sama dengan jumlah bilangan baris yang dibaca daripada fail data excel (fail data).
import pandas as pd

datafile = "Excel File 1.xlsx"
catalogfile = 'Excel File 2.xlsx'
column = 'column C'

### Read specific column (column) from Excel Sheet
df_read = pd.read_excel(datafile, index_col=None, na_values=['NA'], usecols=[column])
# print(df_read)

### Create the dataframe of values within specified ranges to write to Excel
### Group ranges 0.00 - 0.99 in increments of 1 and make a count of each up to a max (12)
df_write = df_read.groupby(pd.cut(df_read[column], [float(i) - 0.01 for i in range(0, 13)])).count()

### Count values greater than 12 and add as row to the dataframe
df_write.loc['12+'] = df_read[df_read > 12].count()

### Sum all values in the column and add as row to the dataframe
df_write.loc[len(df_write.index) + 1] = df_read.sum()

### Rename Index Header
df_write.index.name = 'Range Totals'
### Rename Column Header
df_write.columns = ['Values Count']

### Write dataframe to Excel
### Using default engine Xlsxwriter so new workbook is created (any existing workbook is overwritten)
with pd.ExcelWriter(catalogfile) as writer:
    df_write.to_excel(writer, sheet_name='Sheet1', index=True)

    ### Xlsxwriter formatting
    workbook = writer.book
    cell_format = workbook.add_format()
    cell_format.set_bold(True)

    ws = writer.sheets['Sheet1']
    ### Rename Row Header and add formula to count the totals for each range 
    ### (should equal the total number of data rows read from Excel)
    ws.write(df_write.size, 0, 'Column Total', cell_format)
    ws.write_row(df_write.size + 1, 0, ['Total Rows', '=SUM(B2:B14)'], cell_format)

    ws.autofit()
Salin selepas log masuk

Contoh rupa lembaran kerja excel untuk lajur yang mengandungi 100 baris data (iaitu tidak termasuk hader) dibaca daripada fail data.
Lajur Julat Jumlah ialah lajur indeks dalam bingkai data. Teks julat ditentukan oleh bingkai data, tetapi sebenarnya meliputi julat 0.00 - 0.99, 1.00 - 1.99, 2.00 - 2.99, 3.00 - 3.99, dsb.
Jika perlu, anda boleh mengalih keluar lajur indeks daripada bingkai data semasa menulis ke excel dan menggunakan xlsxwriter untuk menulis teks tersuai pada lajur atau menggunakan templat dengan pengepala sedia ada (dalam kes ini excelwriter memerlukan skema tambahan dan openpyxl semasa enjin menulis ke buku kerja sedia ada) .

Atas ialah kandungan terperinci Python BOT mengekstrak lajur panjang daripada helaian Excel dan cipta kerangka data untuk mengkatalogkan beberapa nombor daripada fail lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!