0Pricing
Pandas & NumPy Academy · บทเรียน

การเขียน DataFrames ลงไฟล์

ส่งออก DataFrame ที่ทำความสะอาดแล้วเป็น CSV และ Excel ด้วย to_csv และ to_excel โดยกำหนดดัชนีและรูปแบบเลขทศนิยม

การเขียน DataFrames ลงไฟล์ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุผลที่การส่งออกมีความสำคัญ

การวิเคราะห์ข้อมูลแทบไม่เคยสิ้นสุดภายใน Python คุณจำเป็นต้องแบ่งปันชุดข้อมูลที่ทำความสะอาดแล้วกับผู้เกี่ยวข้อง ป้อนผลลัพธ์เข้าสู่เครื่องมืออื่น หรือเก็บข้อมูลที่ประมวลผลแล้วเพื่อให้ทำซ้ำได้ Pandas มี to_csv(), to_excel(), to_json() และ to_parquet() ซึ่งสอดคล้องกับฟังก์ชันอ่านและรับพารามิเตอร์กำหนดค่าส่วนใหญ่แบบเดียวกัน

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
df.to_csv('results.csv')
df.to_excel('results.xlsx')
df.to_json('results.json', orient='records')

to_csv(): ข้อควรระวังเกี่ยวกับดัชนี

ตามค่าเริ่มต้น to_csv() จะเขียนดัชนีแถวเป็นคอลัมน์แรก ทำให้เกิดคอลัมน์ unnamed: 0 เมื่ออ่านไฟล์กลับ ใช้ index=False เพื่อละเว้นดัชนี ซึ่งเกือบจะเป็นตัวเลือกที่ถูกต้องเสมอ เว้นแต่ว่าดัชนีนั้นเป็นข้อมูลที่มีความหมาย เช่น วันที่ โปรดระบุ index=False เสมอ เว้นแต่คุณมีเหตุผลที่ตั้งใจจะรวมดัชนีไว้

import pandas as pd

df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

# Include index (default -- creates 'Unnamed: 0' when re-read)
df.to_csv('with_index.csv')

# Exclude index (recommended)
df.to_csv('clean.csv', index=False)

การควบคุมตัวคั่นและการเข้ารหัส

ส่ง sep= เพื่อเขียนไฟล์ที่คั่นด้วยแท็บหรืออัฒภาค ใช้ encoding= เพื่อระบุ UTF-8 หรือชุดอักขระอื่น ซึ่งจำเป็นเมื่อค่าคอลัมน์มีอักขระที่ไม่ใช่ ASCII เช่น อักขระกำกับเสียงหรือตัวอักษรจีน encoding='utf-8-sig' จะเพิ่ม BOM (เครื่องหมายลำดับไบต์) เพื่อให้เข้ากันได้กับ Excel บน Windows

import pandas as pd

df = pd.DataFrame({'name': ['Müller', 'Tanaka'], 'val': [1, 2]})
# Tab-separated, UTF-8
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)

# Excel-compatible UTF-8 with BOM
df.to_csv('for_excel.csv', encoding='utf-8-sig', index=False)

การควบคุมรูปแบบค่าทศนิยม

ตามค่าเริ่มต้น Pandas จะเขียนค่าทศนิยมด้วยความละเอียดเต็ม ใช้ float_format='%.2f' เพื่อจำกัดให้เหลือทศนิยม 2 ตำแหน่ง ซึ่งสำคัญสำหรับข้อมูลทางการเงินที่ทศนิยมส่วนเกินอาจดูไม่ถูกต้องสำหรับผู้อ่าน ใช้ na_rep='NULL' หรือ na_rep='' เพื่อควบคุมวิธีเขียนค่า NaN ลงในไฟล์ผลลัพธ์

import pandas as pd
import numpy as np

df = pd.DataFrame({'price': [9.99, np.nan, 14.123456],
                   'qty': [1, 2, 3]})
df.to_csv('prices.csv',
          index=False,
          float_format='%.2f',
          na_rep='N/A')

to_excel(): การเขียนแผ่นงาน

df.to_excel('file.xlsx', sheet_name='Data', index=False) จะเขียน DataFrame ลงในสมุดงาน Excel เช่นเดียวกับ to_csv() ให้ตั้งค่า index=False เว้นแต่ว่าดัชนีมีความหมาย พารามิเตอร์ startrow= และ startcol= ช่วยให้คุณกำหนดตำแหน่งตารางภายในแผ่นงานได้ ซึ่งมีประโยชน์เมื่อต้องการเพิ่มแถวชื่อเรื่องเหนือข้อมูล

import pandas as pd

df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
df.to_excel('report.xlsx',
            sheet_name='Sales',
            index=False,
            startrow=1)  # leave row 0 for a title

การเขียนหลายแผ่นงานด้วย ExcelWriter

หากต้องการเขียน DataFrames หลายรายการลงในแผ่นงานต่างกันภายในสมุดงานเดียวกัน ให้ใช้ pd.ExcelWriter เป็นตัวจัดการบริบท เรียก df.to_excel(writer, sheet_name='Name') สำหรับแต่ละ DataFrame ภายในบล็อก with เมื่อออกจากบริบท สมุดงานจะถูกจัดทำให้เสร็จสมบูรณ์และบันทึกโดยอัตโนมัติ วิธีนี้ช่วยหลีกเลี่ยงการสร้างไฟล์แยกหลายไฟล์สำหรับตารางที่เกี่ยวข้องกัน

import pandas as pd

df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 4]})

with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

to_json(): การส่งออก JSON

df.to_json() จะแปลง DataFrame เป็น JSON พารามิเตอร์ orient= สอดคล้องกับ read_json โดยใช้ 'records' สำหรับรายการพจนานุกรมของแต่ละแถว (ทำงานร่วมกับระบบอื่นได้ดีที่สุด), 'columns' สำหรับพจนานุกรมของอาร์เรย์คอลัมน์ หรือ 'index' สำหรับพจนานุกรมที่ใช้ป้ายกำกับแถวเป็นคีย์ ส่ง indent=2 เพื่อจัดรูปแบบให้อ่านง่ายสำหรับมนุษย์

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
print(df.to_json(orient='records', indent=2))
# [
#   {"name": "A", "score": 90},
#   {"name": "B", "score": 75}
# ]

การเพิ่มข้อมูลลงในไฟล์ที่มีอยู่

หากต้องการเพิ่มแถวลงใน CSV ที่มีอยู่โดยไม่เขียนทับ ให้เปิดไฟล์ในโหมดเพิ่มข้อมูลด้วย mode='a' และตั้งค่า header=False เพื่อป้องกันการทำซ้ำแถวส่วนหัว สำหรับ Excel ให้ใช้ ExcelWriter พร้อม mode='a' สำหรับกระบวนการประมวลผลข้อมูลแบบสตรีมขนาดใหญ่ ให้เพิ่มข้อมูลเป็นส่วน ๆ และเขียนส่วนหัวเฉพาะในส่วนแรก

import pandas as pd

df_new = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
# Append to existing file, skip writing header
df_new.to_csv('existing.csv',
              mode='a',
              header=False,
              index=False)

การเลือกคอลัมน์ก่อนส่งออก

แนวปฏิบัติที่ดีในการส่งออกคือ เลือกเฉพาะคอลัมน์ที่ผู้รับต้องการและจัดเรียงแถวตามลำดับที่มีเหตุผล วิธีนี้ทำให้ไฟล์ผลลัพธ์เป็นระเบียบมากขึ้นและป้องกันการเปิดเผยคอลัมน์ภายในโดยไม่ตั้งใจ เช่น ID ภายใน คุณลักษณะที่เข้ารหัส หรือแฟล็กสำหรับแก้ไขข้อบกพร่อง ใช้การเลือกด้วยวงเล็บเหลี่ยมและ sort_values() ในเอ็กซ์เพรสชันกระบวนการเดียวกันก่อนเขียนไฟล์

import pandas as pd

df = pd.DataFrame({'id': [3,1,2],
                   'name': ['C','A','B'],
                   '_internal': [9,7,8]})

(df[['id', 'name']]
   .sort_values('id')
   .to_csv('export.csv', index=False))

การตรวจสอบไฟล์ที่เขียนแล้ว

หลังจากเขียนไฟล์แล้ว ให้อ่านไฟล์กลับและตรวจสอบเสมอ ได้แก่ ตรวจสอบ shape ชื่อคอลัมน์ และค่าตัวอย่างบางส่วน สำหรับกระบวนการ CI ให้เปรียบเทียบค่าแฮช สำหรับการส่งออกข้อมูลทางการเงินที่สำคัญ ให้ยืนยันว่าผลรวมที่รวมกลุ่มแล้วตรงกัน วิธีนี้ช่วยตรวจพบปัญหาการเข้ารหัส การสูญเสียความละเอียดของค่าทศนิยม และปัญหาดัชนี ก่อนที่ไฟล์จะถูกส่งต่อให้ผู้ใช้หรืองานถัดไป

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.to_csv('/tmp/check.csv', index=False)

df_check = pd.read_csv('/tmp/check.csv')
assert df_check.shape == df.shape, 'Row/column count mismatch'
assert list(df_check.columns) == list(df.columns)
print('Export verified OK')

Parquet: ทางเลือกที่ดีกว่าสำหรับข้อมูล

สำหรับชุดข้อมูลเชิงวิเคราะห์ขนาดใหญ่ โปรดพิจารณาใช้รูปแบบ พาร์เกต์ แทน CSV โดยพาร์เกต์จะจัดเก็บข้อมูลในรูปแบบคอลัมน์ รองรับการบีบอัด รักษาชนิดข้อมูลได้อย่างถูกต้อง และอ่านข้อมูลสำหรับการสืบค้นเชิงวิเคราะห์ได้เร็วขึ้น 10–100 เท่า เขียนข้อมูลด้วย df.to_parquet('data.parquet') และอ่านด้วย pd.read_parquet('data.parquet') โดยต้องติดตั้ง pyarrow หรือ fastparquet ก่อน

import pandas as pd

df = pd.DataFrame({'a': range(1000000), 'b': range(1000000)})
df.to_parquet('data.parquet', index=False)

df2 = pd.read_parquet('data.parquet')
print(df2.dtypes)  # dtypes preserved exactly

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับการเขียน DataFrames ลงไฟล์จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า to_csv() และ to_excel() ใช้ส่งออก DataFrames และโดยค่าเริ่มต้นทั้งคู่จะรวมดัชนีไว้ด้วย — จึงควรกำหนด index=False เสมอเพื่อให้ได้ผลลัพธ์ที่สะอาด ExcelWriter ช่วยให้เขียน DataFrames หลายรายการลงในชีตแยกกันภายในสมุดงานเดียวได้ และ พาร์เกต์เป็นทางเลือกที่เร็วกว่าและใช้พื้นที่มีประสิทธิภาพกว่า CSV สำหรับชุดข้อมูลเชิงวิเคราะห์ขนาดใหญ่ บทถัดไป เราจะโหลดไฟล์ CSV จากระยะไกลผ่าน URL และแยกวิเคราะห์สตริง CSV ในหน่วยความจำด้วย io.StringIO

คำถามที่พบบ่อย

บทเรียน “การเขียน DataFrames ลงไฟล์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียน DataFrames ลงไฟล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียน DataFrames ลงไฟล์”

ส่งออก DataFrame ที่ทำความสะอาดแล้วเป็น CSV และ Excel ด้วย to_csv และ to_excel โดยกำหนดดัชนีและรูปแบบเลขทศนิยม คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียน DataFrames ลงไฟล์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม

ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ CSV
  2. การอ่านไฟล์ Excel และ JSON
  3. การเขียน DataFrames ลงไฟล์
  4. การอ่านจาก URL และ StringIO
← กลับไปที่ Pandas & NumPy Academy