Ինչպե՞ս միացնել բազմաթիվ TSV ֆայլեր ընդհանուր բանալիով, օգտագործելով Python Pandas-ը:


Եթե դուք աշխատում եք տվյալների հետ, հավանաբար ստիպված եք եղել դիմակայել բազմաթիվ ֆայլեր մեկ համահունչ տվյալներին միաձուլելու մարտահրավերին: Այս առաջադրանքը կարող է հատկապես դժվար լինել, եթե դուք աշխատում եք ներդիրներով առանձնացված արժեքների (TSV) ֆայլերի հետ: Բարեբախտաբար, Python Pandas գրադարանը տրամադրում է պարզ լուծում TSV ֆայլերի միաձուլման համար ընդհանուր բանալիով:

Այս հոդվածում մենք կսովորենք, թե ինչպես միացնել բազմաթիվ TSV ֆայլեր՝ օգտագործելով Python Pandas: Սկզբից մենք նախ կտեսնենք, թե ինչ են TSV ֆայլերը և ինչպես են դրանք տարբերվում CSV ֆայլերից: Հաջորդը, մենք կտեսնենք Pandas գրադարանը և կբացատրենք դրա հնարավորությունները TSV ֆայլերի հետ աշխատելու համար: Եվ վերջապես, մենք քայլ առ քայլ կանցնենք մի քանի TSV ֆայլերի միաձուլման համար՝ օգտագործելով ընդհանուր բանալի՝ Pandas-ի օգնությամբ:

Որոնք են TSV ֆայլերը:

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

Pandas-ն ապահովում է տվյալների մանիպուլյացիայի և վերլուծության գործառույթների լայն շրջանակ, ներառյալ TSV ֆայլերը կարդալու և գրելու գործառույթները:

Քայլեր՝ միաձուլելու տարբեր TSV ֆայլեր ընդհանուր ստեղնով, օգտագործելով Pandas

Այժմ, երբ մենք ներկայացրել ենք TSV ֆայլերը և պանդաները, եկեք խորանանք մի քանի TSV ֆայլերի միաձուլման գործընթացին ընդհանուր բանալիով: Այս հոդվածում մենք ենթադրում ենք, որ դուք ունեք մի քանի TSV ֆայլեր, որոնք ավարտվում են: tsv (ինչպես youdatafile.tsv և այլն), որը ցանկանում եք միաձուլել մեկ միասնական տվյալների բազայի մեջ՝ օգտագործելով Python pandas:

Եկեք տեսնենք տարբեր TSV ֆայլերի միաձուլման քայլերը ընդհանուր ստեղնով, օգտագործելով Pandas:

Քայլ 1. Ներբեռնեք տարբեր TSV ֆայլեր Pandas DataFrames-ում

Ֆայլերը միավորելու մեր առաջին քայլը յուրաքանչյուր TSV ֆայլ բեռնելն է Pandas DataFrame-ում: Մենք կարող ենք դա անել՝ օգտագործելով Pandas read_csv() ֆունկցիան, որը կարող է կարդալ TSV ֆայլերը, ինչպես նաև CSV ֆայլերը։

Այժմ ենթադրենք, որ մենք ունենք երեք TSV ֆայլ, որոնք ցանկանում ենք միավորել՝ persons.tsv, orderdetails.tsv և productdetails.tsv: Այս ֆայլերից յուրաքանչյուրը պարունակում է մեր տվյալների տարբեր ասպեկտներ.

  • personas.tsv-ը պարունակում է տեղեկություններ մեր անձանց մասին, ինչպիսիք են նրանց անունը, էլ. փոստի հասցեն և հեռախոսահամարը

  • orderdetails.tsv-ը պարունակում է տեղեկություններ մեր անձանց կողմից կատարված պատվերի մանրամասների մասին, ինչպիսիք են պատվերի ամսաթիվը և ընդհանուր արժեքը

  • productdetails.tsv-ը պարունակում է տեղեկատվություն մեր վաճառվող ապրանքի մանրամասների մասին, ինչպիսիք են ապրանքի անվանումը և գինը

Այժմ մենք յուրաքանչյուր ֆայլ կբեռնենք Pandas DataFrame-ում: Դա անելու համար մենք կօգտագործենք հետևյալ կոդը.

import pandas as pd
persons = pd.read_csv('persons.tsv', sep='\t')
orderdetails = pd.read_csv('orderdetails.tsv', sep='\t')
productdetails = pd.read_csv('productdetails.tsv', sep='\t')

Քայլ 2. Ստուգեք DataFrames-ը

Յուրաքանչյուր TSV ֆայլ առանձին Pandas DataFrame-ում բեռնելուց հետո հաջորդ քայլը յուրաքանչյուր DataFrame-ի ստուգումն է՝ համոզվելու համար, որ տվյալները ճիշտ են բեռնված: Դա անելու համար մենք կօգտագործենք head() ֆունկցիան, որն օգտագործվում է տվյալների շրջանակի առաջին մի քանի տողերը ցուցադրելու համար:

print(persons.head())
print(orderdetails.head())
print(productdetails.head())

Վերոնշյալ կոդը կցուցադրի վահանակի յուրաքանչյուր DataFrame-ի առաջին հինգ տողերը: Մենք կարող ենք օգտագործել այս տեղեկատվությունը` ստուգելու, որ տվյալները ճիշտ են բեռնված և հասկանալու համար, թե ինչ է պարունակում յուրաքանչյուր DataFrame:

Քայլ 3. Միավորել DataFrames-ը

Այժմ, երբ մենք ունենք յուրաքանչյուր TSV ֆայլ բեռնված առանձին Pandas DataFrame-ում, մենք կարող ենք միավորել տվյալները մեկ միասնական տվյալների մեջ: Դա անելու համար մենք կօգտագործենք merge() ֆունկցիան, որը տրամադրվում է Pandas-ի կողմից:

merge() ֆունկցիան միավորում է երկու DataFrame մեկ DataFrame՝ հիմնված ընդհանուր բանալիի վրա: Մեր դեպքում ընդհանուր բանալին հաճախորդի ID-ն է: Մենք սկզբում կմիավորենք DataFrame անձերը պատվերի մանրամասների հետ DataFrame-ի հետ, իսկ հետո ստացված DataFrame-ը կմիավորենք արտադրանքի մանրամասների DataFrame-ի հետ:

# Merge persons and orderdetails
customer_orderdetails = pd.merge(persons, orderdetails, on='customer_id')

# Merge customer_orderdetails and productdetails
merged_data = pd.merge(customer_orderdetails, productdetails, on='product_id')

merge() ֆունկցիան ընդունում է երկու DataFrames որպես մուտքագրում և արգումենտ, որը սահմանում է միավորման համար օգտագործվող ընդհանուր բանալին: Մեր դեպքում ընդհանուր բանալին customer_id սյունակն է անձանց DataFrame-ում և orderdetails DataFrame-ում, և product_id սյունակը customer_orderdetails DataFrame-ում և productdetails DataFrame-ում:

Ստացված merged_data DataFrame-ը պարունակում է բնօրինակ TSV ֆայլերի ամբողջ տեղեկատվությունը, որոնք միավորված են մեկ համահունչ տվյալների մեջ:

Քայլ 4. Ֆայլի պահպանում

Վերջապես, մենք կարող ենք միաձուլված տվյալները պահել TSV ֆայլում՝ օգտագործելով պանդաների կողմից տրամադրված to_csv() ֆունկցիան:

merged_data.to_csv('merged_data.tsv', sep='\t', index=False)

Օրինակ

Դիտարկենք հետևյալ օրինակը. Մենք ունենք երեք TSV ֆայլ՝ «mydata1.tsv, «mydata2.tsv և «mydata3.tsv: Յուրաքանչյուր ֆայլ պարունակում է նույն սյունակները՝ id, անուն և կոնտակտ:

Ստորև բերված օրինակում մենք օգտագործել ենք concat() ֆունկցիան, որն ընդունում է DataFrames-ի ցուցակը որպես մուտքագրում և միավորում դրանք մեկ DataFrame-ի մեջ: Լռելյայնորեն, concat()-ը միավորում է DataFrames-ը ուղղահայաց, ինչը նշանակում է, որ դրանք դնում է միմյանց վրա: Այս օրինակում, քանի որ երեք TSV ֆայլերն ունեն նույն սյունակները, արդյունքում միաձուլված DataFrame-ը նույնպես կունենա նույն սյունակները:

import pandas as pd
# Load different TSV files into DataFrames
mydf1 = pd.read_csv('mydata1.tsv', sep='\t')
mydf2 = pd.read_csv('mydata2.tsv', sep='\t')
mydf3 = pd.read_csv('mydata3.tsv', sep='\t')

# Merge DataFrames using concat()
mymerged_data = pd.concat([mydf1, mydf2, mydf3])

# Save merged data to TSV file
mymerged_data.to_csv('merged_data.tsv', sep='\t', index=False)

Արդյունք

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

Օրինակ

Դիտարկենք հետևյալ օրինակը. Մենք ունենք երկու TSV ֆայլ՝ myproductdetails.tsv և mysales.tsv: myproductdetails.tsv ֆայլը պարունակում է տեղեկատվություն ապրանքի մանրամասների մասին, մինչդեռ mysales.tsv ֆայլը պարունակում է տեղեկատվություն վաճառքի գործարքների մասին: Երկու ֆայլերն էլ պարունակում են product_id սյունակ, որը մենք կօգտագործենք որպես ընդհանուր բանալի՝ ֆայլերը միացնելու համար:

import pandas as pd

# Load TSV files into DataFrames
myproductdetailsdf = pd.read_csv('myproductdetails.tsv', sep='\t')
mysalesdf = pd.read_csv('mysales.tsv', sep='\t')

# Merge DataFrames using merge()
mymerged_data = pd.merge(myproductdetailsdf, mysalesdf, on='product_id')

# Save merged data to TSV file
mymerged_data.to_csv('mymerged_data.tsv', sep='\t', index=False)

Արդյունք

Name    Age    City
John    25     London
Emily   32     New York
David   41     Paris
Sophie  29     Berlin
Michael 37     Sydney
Emma    31     Toronto

Վերոնշյալ օրինակում մենք օգտագործել ենք merge() ֆունկցիան՝ որպես մուտքագրում երկու DataFrames և արգումենտ, որը սահմանում է միավորման համար օգտագործվող ընդհանուր բանալին: Այս օրինակում մենք միավորում ենք myproductdetailsdf և mysalesdf DataFrames-ը՝ հիմնված product_id սյունակի վրա: Արդյունքում միավորված DataFrame-ը կպարունակի բոլոր սյունակները երկու DataFrames-ից, ընդ որում տողերը համընկնում են ընդհանուր բանալիի հիման վրա:

Եզրակացություն

Այս հոդվածում մենք սովորեցինք, թե ինչպես միաձուլել բազմաթիվ TSV ֆայլեր ընդհանուր բանալիով, օգտագործելով Python Pandas-ը քայլ առ քայլ ձեռնարկի միջոցով, թե ինչպես կարելի է միացնել բազմաթիվ TSV ֆայլեր ընդհանուր բանալիով, օգտագործելով Pandas: