Այս բլոգում ես ցանկանում եմ օգնել ձեզ հեշտությամբ ներմուծել excel ֆայլեր ցանկացած ֆայլի ընդարձակմամբ: Ավելի կոնկրետ, օգտագործեք միայն մեկ գործառույթ՝ ցանկացած excel ձևաչափ կարդալու համար (ներառյալ ավտոմատ կերպով ստանալ անջատիչ/սահմանազատիչ, որն օգտագործվում է ներսում):

Պահանջվող փաթեթներ՝

  • պանդաներ՝ python բաց կոդով տվյալների վերլուծության և մանիպուլյացիայի գործիք: https://pandas.pydata.org/
  • xlrd. գրադարան՝ Excel ֆայլերից տվյալների ընթերցման և ֆորմատավորման համար պատմական .xls ձևաչափով: https://xlrd.readthedocs.io/en/latest/
  • openpyxl՝ Python գրադարան՝ Excel 2010 xlsx/xlsm ֆայլերը կարդալու/գրելու համար: https://pypi.org/project/openpyxl/
  • Pathlib (արդեն տեղադրված է python-ով). Այն առաջարկում է դասեր, որոնք ներկայացնում են ֆայլային համակարգի ուղիները տարբեր օպերացիոն համակարգերի համար համապատասխան իմաստաբանությամբ: https://docs.python.org/3/library/pathlib.html
  • csv (արդեն տեղադրված է python-ով). Այն իրականացնում է դասեր՝ CSV ձևաչափով աղյուսակային տվյալները կարդալու և գրելու համար:


Բացատրություններ:

  • .csv և .txt ֆայլերի համար այստեղ օգտագործվում է «read_csv()» ֆունկցիան: Հարկ է նշել, որ մենք օգտագործել ենք «csv.Sniffer()»՝ սկզբում ներսից անջատիչ/սահմանազատիչը ավտոմատ կերպով ստանալու համար։
  • .xlsx / .xlsm / .xltx / .xltm ֆայլի համար «read_excel()» ֆունկցիան օգտագործվում է openpyxl շարժիչի հետ միասին:
  • .xlsֆայլի համար օգտագործվում է «read_excel()» ֆունկցիան:

Կոդ:

import pandas as pd
from pathlib import Path
import csv

def import_spreadsheet(file_path,**kwargs):
    """
    import a spreadsheet/excel with any extension.
    Parameters
    ----------
    file_path: string
        file path of the spreadsheet/ excel file (relative or absolute).
    **kwargs:
        shared arguments of read_csv and read_excel 
    
    Returns
    -------
    df: pandas Dataframe
        dataframe of the spreadsheet.
    """

    file_path = Path(file_path) 

    # Path.suffix return the extension of a file
    if file_path.suffix == '.csv' or file_path.suffix == '.txt':      

        # check the deliminiter
        with open(file_path, 'r', encoding='utf8') as csvfile:
            dialect = csv.Sniffer().sniff(csvfile.readline())

        df = pd.read_csv(file_path, sep=str(dialect.delimiter),**kwargs)

    elif file_path.suffix in ['.xlsx', '.xlsm', '.xltx', '.xltm']:
        df = pd.read_excel(file_path, engine='openpyxl',**kwargs)

    # be cafefull that xlrd has explicitly removed support for anything other than xls files.
    else:
        df = pd.read_excel(file_path,**kwargs)

    return df

Խորհուրդներ.

Եթե ​​աղյուսակը և ձեր python ֆայլը գտնվում են նույն թղթապանակում, «file_path» մուտքային փաստարկը ձեր աղյուսակի ֆայլի անունն է, օրինակ. «XXX.csv»

Հիշեցում.

Շնորհիվ **kwargsարգումենտների՝ մենք կարող ենք լրացուցիչ արգումենտներ փոխանցել այս ֆունկցիաներում։ Օրինակ՝ աղյուսակ ներմուծելիս առավել հաճախ օգտագործվող 2 փաստարկները.

  • վերնագիր՝ int, int-ի ցանկ կամ None: Տող (0-ինդեքսավորված)՝ օգտագործելու վերլուծված DataFrame-ի սյունակների պիտակների համար:
  • index_col : int, int ցուցակ կամ None: Սյունակ (0-ինդեքսավորված)՝ որպես DataFrame-ի տողերի պիտակներ օգտագործելու համար:

Այս ֆունկցիան օգտագործելիս կարող ենք արգումենտներում գրել.

# using default arguments
df = import_spreadsheet(file_path='YourSpreadSheet.csv') 
# define arguments yourself
df = import_spreadsheet(file_path='YourSpreadSheet.csv', header = 1, index_col=1)

Դիտեք աղյուսակների ընթերցման ավելի շատ մուտքային արգումենտներ՝-ում

https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

https://pandas.pydata.org/pandasdocs/stable/reference/api/pandas.read_excel.html

— — — — — — — — — -

Շնորհակալ եմ շատ իմ բլոգը կարդալու համար: Եթե դուք ունեք մտքեր կամ կարծիքներ թեմայի վերաբերյալ, ես կցանկանայի լսել ձեզնից ստորև ներկայացված մեկնաբանություններում: Կհանդիպենք շուտով:

Իմ բլոգի կայքը՝https://technodatascience.blogspot.com/2022/12/how-to-import-any-formats-of.html

Github. https://github.com/TianyiDataScience

Linkedin՝ https://www.linkedin.com/in/tianyi-li-v