วิธีรวมไฟล์ CSV ใน Python

Withi Rwm Fil Csv Ni Python



บางครั้งชุดข้อมูลที่กำหนดไม่ได้อยู่ในไฟล์ CSV ไฟล์เดียว พวกเขาทั้งหมดอยู่ในแผ่นงาน Excel ที่แตกต่างกัน คุณรู้อยู่แล้วว่าควรดำเนินกิจกรรมการคำนวณหรือการประมวลผลล่วงหน้าทั้งหมดในชุดข้อมูลเดียวแทนที่จะเป็นชุดข้อมูลหลายชุด ลดหรือประหยัดเวลาที่เราต้องใช้ในงานประมวลผลล่วงหน้า นอกจากนี้ ในฐานะนักวิเคราะห์ข้อมูลหรือนักวิทยาศาสตร์ข้อมูล คุณมักจะพบว่าตัวเองมีงานล้นมือจากไฟล์ CSV จำนวนมากที่ต้องรวมเข้าด้วยกันก่อนที่คุณจะเริ่มการวิเคราะห์หรือตรวจสอบข้อมูลที่มีอยู่ ในทางกลับกัน เป็นไปไม่ได้เสมอไปที่ไฟล์ทั้งหมดจะได้รับจากแหล่งข้อมูลเดียวหรือแหล่งเดียวกัน และมีชื่อคอลัมน์/ตัวแปรและโครงสร้างข้อมูลเดียวกัน โพสต์นี้จะสอนให้คุณรวมไฟล์ CSV สองไฟล์ขึ้นไปที่มีโครงสร้างคอลัมน์ที่คล้ายกันหรือต่างกัน

เหตุใดจึงต้องรวมไฟล์ CSV

ชุดข้อมูลอาจเป็นคอลเลกชันหรือกลุ่มของค่าหรือตัวเลขที่เกี่ยวข้องกับเรื่องใดเรื่องหนึ่ง ตัวอย่างเช่น ผลการทดสอบของนักเรียนแต่ละคนในชั้นเรียนเป็นตัวอย่างของชุดข้อมูล เนื่องจากชุดข้อมูลมีขนาดใหญ่ จึงมักจัดเก็บไว้ในไฟล์ CSV แยกต่างหากสำหรับหมวดหมู่ต่างๆ ตัวอย่างเช่น หากเราต้องตรวจผู้ป่วยเพื่อหาโรคเฉพาะ เราต้องพิจารณาทุกองค์ประกอบ รวมถึงเพศ เวชระเบียน อายุ ความรุนแรงของโรค ฯลฯ ดังนั้น จึงจำเป็นต้องรวมข้อมูล CSV เพื่อตรวจสอบปัจจัยทำนายต่างๆ ที่มีอิทธิพล ด้าน นอกจากนี้ การทำงานและจัดการชุดข้อมูลชุดเดียวจะดีกว่าชุดข้อมูลหลายชุดในขณะที่ดำเนินการคำนวณหรือประมวลผลล่วงหน้า ช่วยประหยัดหน่วยความจำและทรัพยากรการคำนวณอื่นๆ







วิธีรวมไฟล์ CSV ใน Python

มีหลายวิธีในการรวมไฟล์ CSV สองไฟล์ขึ้นไปใน Python ในส่วนด้านล่าง เราจะใช้ฟังก์ชัน append(), concat() และ merge() เป็นต้น ในการรวมไฟล์ CSV เข้ากับ pandas dataframe จากนั้น dataframes จะถูกแปลงเป็นไฟล์ CSV ไฟล์เดียว เราจะสอนวิธีรวมไฟล์ CSV หลายไฟล์ที่มีโครงสร้างคอลัมน์ที่คล้ายกันหรือแปรผัน



วิธีที่ # 1: การรวม CSV ที่มีโครงสร้างหรือคอลัมน์ที่คล้ายกัน

ไดเร็กทอรีการทำงานปัจจุบันของเรามีไฟล์ CSV สองไฟล์ ได้แก่ “test1” และ “test2”



ตัวอย่าง # 1: การใช้ฟังก์ชันผนวก ()

ไฟล์ CSV ทั้งสองไฟล์มีโครงสร้างเดียวกัน วิธีนี้จะใช้ฟังก์ชัน glob() เพื่อแสดงรายการไฟล์ CSV ในไดเร็กทอรีการทำงานเท่านั้น จากนั้น เราจะใช้ “pandas.DataFrame.append()” เพื่ออ่านไฟล์ CSV ของเรา (ที่มีโครงสร้างตารางทั่วไป)





เอาท์พุต:



เมื่อใช้ฟังก์ชันต่อท้าย เราได้ผนวกหรือเพิ่มแต่ละแถวข้อมูลจาก test2.csv ใต้แถวข้อมูลของ test1.csv เนื่องจากจะเห็นได้ว่ามีการรวมแถวข้อมูลทั้งหมดของไฟล์เข้าด้วยกัน ในการแปลง dataframe นี้เป็น CSV เราสามารถใช้ฟังก์ชัน to_csv()

สิ่งนี้จะสร้างไฟล์ CSV รวมของไฟล์ CSV ของ 'test1' และ 'test2' ในไดเร็กทอรีการทำงานของเราด้วยชื่อที่ระบุ เช่น merged.csv

ตัวอย่าง # 2: การใช้ฟังก์ชัน concat()

เราจะนำเข้าโมดูลแพนด้าก่อน วิธีการแมปจะอ่านไฟล์ CSV แต่ละไฟล์ที่เราส่งผ่านโดยใช้ pd.read_csv() ไฟล์ที่แมปเหล่านี้ (ไฟล์ CSV) จะรวมกันตามแกนของแถวโดยค่าเริ่มต้น โดยใช้ฟังก์ชัน pd.concat() หากเราต้องการรวมไฟล์ CSV ในแนวนอน เราสามารถส่ง axis=1 การระบุดัชนีละเว้น = True จะสร้างค่าดัชนีต่อเนื่องสำหรับ dataframe ที่รวมกันด้วย

pd.read_csv() ถูกส่งผ่านภายในฟังก์ชัน concat() เพื่ออ่านไฟล์ CSV ลงในดาต้าเฟรมของ pandas หลังจากการต่อข้อมูล

เราได้รับ dataframe ที่รวมข้อมูลของไฟล์ CSV ทั้งหมดในไดเร็กทอรีการทำงาน ตอนนี้มาแปลงเป็นไฟล์ CSV

CSV ที่รวมกันของเราถูกสร้างขึ้นในไดเร็กทอรีปัจจุบัน

วิธีที่ # 2: การรวม CSV กับโครงสร้างหรือคอลัมน์ต่างๆ

เราได้กล่าวถึงการรวมไฟล์ CSV ที่มีคอลัมน์และโครงสร้างเดียวกันในวิธีแรก ในวิธีนี้ เราจะรวมไฟล์ CSV กับคอลัมน์และโครงสร้างต่างๆ

ตัวอย่าง # 1: การใช้ฟังก์ชัน merge()

ฟังก์ชัน “pandas.merge()” ในโมดูล pandas สามารถรวมไฟล์ CSV สองไฟล์เข้าด้วยกัน การผสานหมายถึงการรวมชุดข้อมูล 2 ชุดเป็นชุดข้อมูลเดียวโดยอิงตามคอลัมน์หรือแอตทริบิวต์ที่ใช้ร่วมกัน

เราสามารถรวม dataframes ได้สี่วิธีในการเข้าร่วม:

  • อินเนอร์
  • ถูกต้อง
  • ซ้าย
  • ด้านนอก

ในการผสานประเภทนี้ เราจะใช้ไฟล์ CSV สองไฟล์

โปรดทราบว่าไฟล์ CSV ทั้งสองไฟล์ต้องแชร์อย่างน้อยหนึ่งแอตทริบิวต์หรือคอลัมน์ ตามที่สังเกต คอลัมน์ 'ชื่อ' และแอตทริบิวต์บางส่วนจะใช้ร่วมกันโดยไฟล์ CSV ทั้งสองไฟล์

รวมโดยใช้การเข้าร่วมภายใน

การระบุพารามิเตอร์ how=’inner’ ในฟังก์ชัน merge() จะรวมสอง dataframes ตามคอลัมน์ที่ระบุ แล้วจัดเตรียม dataframe ใหม่ที่มีเฉพาะแถวที่มีค่าเหมือนกัน/เหมือนกันใน dataframe เดิมทั้งสอง

ดังจะเห็นว่าฟังก์ชันได้รวมไฟล์ CSV ทั้งสองและส่งคืนแถวตามแอตทริบิวต์ทั่วไปของคอลัมน์ 'ชื่อ'

รวมโดยใช้การรวมภายนอกด้านขวา

เมื่อมีการระบุพารามิเตอร์ how=’right’ dataframe ทั้งสองจะรวมกันตามคอลัมน์ที่เราระบุสำหรับพารามิเตอร์ 'on' และ dataframe ใหม่ที่มีแถวทั้งหมดจาก dataframe ด้านขวา รวมถึงแถวใดๆ ที่ dataframe ด้านซ้ายไม่มีค่าจะถูกส่งคืน โดยค่าคอลัมน์ของ dataframe ด้านซ้ายจะตั้งค่าเป็น NAN

รวมโดยใช้การรวมภายนอกด้านซ้าย

เมื่อระบุพารามิเตอร์เป็น 'left' อย่างไร dataframe ทั้งสองจะรวมกันตามคอลัมน์ที่ระบุโดยใช้พารามิเตอร์ 'on' ส่งคืน dataframe ใหม่ที่มีแถวทั้งหมดจาก dataframe ด้านซ้าย รวมทั้งแถวที่มี NAN หรือค่า Null ในดาต้าเฟรมที่ถูกต้อง และตั้งค่าคอลัมน์ดาต้าเฟรมขวาเป็น NAN

รวมโดยใช้การรวมภายนอกแบบเต็ม

เมื่อระบุ how='outer' จะมีการรวม dataframe ทั้งสองโดยขึ้นอยู่กับคอลัมน์ที่ระบุสำหรับพารามิเตอร์ 'on' โดยส่งคืน dataframe ใหม่ที่มีแถวจากทั้ง df1 และ df2 dataframes และตั้งค่า NAN เป็นค่าสำหรับแถวใดๆ ซึ่งไม่มีข้อมูลอยู่ในดาต้าเฟรมตัวใดตัวหนึ่ง

ตัวอย่าง # 2: การรวมไฟล์ CSV ทั้งหมดในไดเรกทอรีการทำงาน

ในวิธีนี้ เราจะใช้โมดูลทรงกลมเพื่อรวมไฟล์ .csv ทั้งหมดไว้ใน DataFrame ของ pandas ต้องอิมพอร์ตไลบรารีทั้งหมดก่อน ต่อไป เราจะกำหนดเส้นทางสำหรับไฟล์ CSV แต่ละไฟล์ที่เราต้องการรวม เส้นทางไฟล์เป็นอาร์กิวเมนต์แรกสำหรับฟังก์ชัน os.path.join() ในตัวอย่างด้านล่าง และอาร์กิวเมนต์ที่สองคือส่วนประกอบพาธหรือไฟล์ .csv ที่จะเข้าร่วม ที่นี่ นิพจน์ '*.csv' จะค้นหาและส่งคืนไฟล์แต่ละไฟล์ในไดเร็กทอรีการทำงานที่ลงท้ายด้วยนามสกุลไฟล์ .csv ฟังก์ชัน glob.glob(รวมไฟล์) ยอมรับรายชื่อไฟล์ที่ผสานเป็นอินพุตและเอาต์พุตรายการไฟล์ที่ผสาน/รวมทั้งหมด

สคริปต์นี้จะส่งคืนดาต้าเฟรมพร้อมข้อมูลรวมของไฟล์ CSV ทั้งหมดในไดเร็กทอรีการทำงานของเรา

dataframe นี้จะถูกแปลงเป็นไฟล์ CSV และจะใช้ฟังก์ชัน to_csv() สำหรับการแปลงนี้ ไฟล์ CSV ใหม่นี้จะเป็นไฟล์ CSV แบบรวมที่สร้างขึ้นจากไฟล์ CSV ทั้งหมดที่จัดเก็บไว้ในไดเร็กทอรีการทำงานปัจจุบัน

บทสรุป

ในโพสต์นี้ เราได้กล่าวถึงสาเหตุที่เราต้องรวมไฟล์ CSV เราได้กล่าวถึงวิธีการรวมไฟล์ CSV ตั้งแต่สองไฟล์ขึ้นไปใน Python เราแบ่งบทช่วยสอนนี้ออกเป็นสองส่วน ในส่วนแรก เราได้อธิบายวิธีใช้ฟังก์ชัน append() และ concat() เพื่อรวมไฟล์ CSV ที่มีโครงสร้างหรือชื่อคอลัมน์เดียวกัน ในส่วนที่สอง เราใช้เมธอด merge(), os.path.join() และเมธอด glob ในการรวมไฟล์ CSV ของคอลัมน์และโครงสร้างต่างๆ