ปรับแต่งการนำเข้าข้อมูลด้วย pandas
แพ็กเกจ pandas ช่วยจัดการปัญหาต่าง ๆ ที่มักพบเมื่อนำเข้าข้อมูลในฐานะนักวิทยาศาสตร์ข้อมูล ไม่ว่าจะเป็นคอมเมนต์ในไฟล์ flat file บรรทัดว่าง หรือค่าที่หายไป (NA หรือ NaN) เพื่อปิดท้ายบทนี้ จะได้นำเข้าชุดข้อมูล Titanic ที่มีความผิดพลาดอยู่บ้างในชื่อ titanic_corrupt.txt ซึ่งมีคอมเมนต์หลังอักขระ '#' และคั่นด้วย tab
อาร์กิวเมนต์สำคัญของ pd.read_csv() ได้แก่:
sepกำหนด delimiter ที่ใช้คั่นข้อมูล- ใช้
','สำหรับการคั่นด้วยเครื่องหมายจุลภาค - ใช้
'\t'สำหรับการคั่นด้วย tab
- ใช้
commentรับอักขระที่บ่งบอกว่าข้อความหลังจากนั้นคือคอมเมนต์ ซึ่งจะถูกละเว้นทั้งหมดna_valuesรับลิสต์ของสตริงที่ต้องการให้ระบุเป็นNA/NaNโดยค่าเริ่มต้นบางค่าถูกรู้จักอยู่แล้ว การระบุอาร์กิวเมนต์นี้จะเพิ่มค่าที่ต้องการให้ครอบคลุมมากขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้น: การนำเข้าข้อมูล
คำแนะนำการฝึกหัด
- กำหนดอาร์กิวเมนต์ของ
pd.read_csv()ให้ครบถ้วนเพื่อนำเข้าtitanic_corrupt.txtด้วย pandas อย่างถูกต้อง:sepกำหนด delimiter ที่ใช้ และทำงานเช่นเดียวกับอาร์กิวเมนต์delimiterของnp.loadtxt()โดยไฟล์ที่นำเข้านี้คั่นด้วย tabcommentรับอักขระที่ระบุว่าข้อความหลังจากนั้นคือคอมเมนต์ ซึ่งในกรณีนี้คือ'#'na_valuesรับลิสต์ของสตริงที่ต้องการให้ถือเป็นNA/NaNในกรณีนี้คือสตริง'Nothing'
- รันโค้ดส่วนที่เหลือเพื่อแสดง head ของ DataFrame ที่ได้ และพลอตฮิสโตแกรมของ
'Age'ของผู้โดยสารบนเรือไททานิก
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
# Assign filename: file
file = 'titanic_corrupt.txt'
# Import file: data
data = pd.read_csv(file, sep='____', comment='____', na_values=[____])
# Print the head of the DataFrame
print(data.head())
# Plot 'Age' variable in a histogram
pd.DataFrame.hist(data[['Age']])
plt.xlabel('Age (years)')
plt.ylabel('count')
plt.show()