ขั้นตอนแรกเมื่อเริ่มทำงานกับชุดข้อมูลใหม่คือการทำความเข้าใจ ในการทำเช่นนี้ คุณต้องค้นหาช่วงของค่าที่ตัวแปรยอมรับ ประเภทของมัน และค้นหาเกี่ยวกับจำนวนค่าที่หายไปด้วย
ห้องสมุด pandas มีเครื่องมือที่มีประโยชน์มากมายสำหรับดำเนินการวิเคราะห์ข้อมูลเชิงสำรวจ (EDA) แต่ก่อนที่คุณจะใช้งาน คุณจะต้องเริ่มต้นด้วยฟังก์ชันทั่วไป เช่น df.describe() อย่างไรก็ตาม ควรสังเกตว่าความสามารถที่ได้รับจากฟังก์ชันดังกล่าวนั้นมีจำกัด และระยะเริ่มต้นของการทำงานกับชุดข้อมูลใด ๆ เมื่อดำเนินการ EDA มักจะคล้ายกันมาก
ผู้เขียนเนื้อหาที่เราเผยแพร่ในวันนี้กล่าวว่าเขาไม่ชอบการกระทำซ้ำๆ ด้วยเหตุนี้ ในการค้นหาเครื่องมือเพื่อทำการวิเคราะห์ข้อมูลเชิงสำรวจอย่างรวดเร็วและมีประสิทธิภาพ เขาจึงพบห้องสมุด
ที่นี่เราจะดูคุณสมบัติของการใช้ไลบรารีโปรไฟล์แพนด้าโดยใช้ชุดข้อมูล Titanic เป็นตัวอย่าง
การวิเคราะห์ข้อมูลเชิงสำรวจโดยใช้แพนด้า
ฉันตัดสินใจทดลองทำโปรไฟล์แพนด้าบนชุดข้อมูล Titanic เนื่องจากมีข้อมูลประเภทต่างๆ ที่มีอยู่และมีค่าที่ขาดหายไป ฉันเชื่อว่าไลบรารีการทำโปรไฟล์ของแพนด้านั้นน่าสนใจอย่างยิ่งในกรณีที่ข้อมูลยังไม่ได้รับการล้างและต้องมีการประมวลผลเพิ่มเติมขึ้นอยู่กับลักษณะของข้อมูล เพื่อที่จะดำเนินการประมวลผลดังกล่าวได้สำเร็จ คุณจำเป็นต้องรู้ว่าจะเริ่มต้นที่ไหนและควรใส่ใจกับสิ่งใด นี่คือจุดที่ความสามารถในการสร้างโปรไฟล์แพนด้ามีประโยชน์
ขั้นแรก เรานำเข้าข้อมูลและใช้แพนด้าเพื่อรับสถิติเชิงพรรณนา:
# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np
# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')
# вычисление показателей описательной статистики
df.describe()
หลังจากรันโค้ดชิ้นนี้แล้ว คุณจะได้สิ่งที่แสดงในรูปต่อไปนี้
สถิติเชิงพรรณนาที่ได้จากเครื่องมือแพนด้ามาตรฐาน
แม้ว่าจะมีข้อมูลที่เป็นประโยชน์มากมายที่นี่ แต่ก็ไม่มีทุกสิ่งที่น่าสนใจที่จะรู้เกี่ยวกับข้อมูลที่กำลังศึกษาอยู่ ตัวอย่างเช่น เราอาจสันนิษฐานว่าในกรอบข้อมูล ในโครงสร้าง DataFrame
มี 891 เส้น. หากจำเป็นต้องตรวจสอบ ก็จำเป็นต้องมีโค้ดอีกบรรทัดเพื่อกำหนดขนาดของเฟรม แม้ว่าการคำนวณเหล่านี้จะไม่ต้องใช้ทรัพยากรมากนัก แต่การทำซ้ำตลอดเวลาจะทำให้เสียเวลาซึ่งอาจใช้เวลาทำความสะอาดข้อมูลดีกว่า
การวิเคราะห์ข้อมูลเชิงสำรวจโดยใช้การทำโปรไฟล์แพนด้า
ตอนนี้เรามาทำเช่นเดียวกันโดยใช้การทำโปรไฟล์แพนด้า:
pandas_profiling.ProfileReport(df)
การดำเนินการบรรทัดโค้ดด้านบนจะสร้างรายงานพร้อมตัวบ่งชี้การวิเคราะห์ข้อมูลเชิงสำรวจ โค้ดที่แสดงด้านบนจะแสดงข้อมูลที่พบ แต่คุณสามารถกำหนดให้แสดงเป็นไฟล์ HTML ที่คุณสามารถแสดงให้ผู้อื่นเห็นได้ เป็นต้น
ส่วนแรกของรายงานจะมีส่วนภาพรวม ซึ่งให้ข้อมูลพื้นฐานเกี่ยวกับข้อมูล (จำนวนการสังเกต จำนวนตัวแปร ฯลฯ) นอกจากนี้ ยังประกอบด้วยรายการการแจ้งเตือน เพื่อแจ้งให้นักวิเคราะห์ทราบถึงสิ่งที่ควรให้ความสนใจเป็นพิเศษ การแจ้งเตือนเหล่านี้สามารถให้เบาะแสว่าคุณสามารถมุ่งความสนใจไปที่การล้างข้อมูลของคุณได้ที่จุดใด
ส่วนรายงานภาพรวม
การวิเคราะห์ตัวแปรเชิงสำรวจ
ด้านล่างส่วนภาพรวมของรายงาน คุณจะพบข้อมูลที่เป็นประโยชน์เกี่ยวกับตัวแปรแต่ละตัว เหนือสิ่งอื่นใด ได้แก่ แผนภูมิขนาดเล็กที่อธิบายการกระจายตัวของตัวแปรแต่ละตัว
เกี่ยวกับตัวแปรตัวเลขอายุ
ดังที่คุณเห็นจากตัวอย่างก่อนหน้านี้ การทำโปรไฟล์แพนด้าให้ตัวบ่งชี้ที่มีประโยชน์หลายประการแก่เรา เช่น เปอร์เซ็นต์และจำนวนของค่าที่หายไป ตลอดจนมาตรการทางสถิติเชิงพรรณนาที่เราได้เห็นแล้ว เพราะ Age
เป็นตัวแปรตัวเลข การแสดงภาพการกระจายของมันในรูปแบบของฮิสโตแกรมช่วยให้เราสรุปได้ว่าเรามีการกระจายเอียงไปทางขวา
เมื่อพิจารณาตัวแปรเชิงหมวดหมู่ ผลลัพธ์ที่ได้จะแตกต่างเล็กน้อยจากที่พบในตัวแปรตัวเลข
เกี่ยวกับตัวแปรหมวดหมู่เพศ
กล่าวคือ แทนที่จะค้นหาค่าเฉลี่ย ต่ำสุด และสูงสุด ไลบรารีโปรไฟล์แพนด้ากลับพบจำนวนคลาส เพราะ Sex
— ตัวแปรไบนารี่ ค่าของมันถูกแสดงด้วยสองคลาส
หากคุณต้องการตรวจสอบโค้ดเหมือนฉัน คุณอาจสนใจว่าไลบรารีโปรไฟล์แพนด้าคำนวณเมตริกเหล่านี้อย่างไร การค้นหาเกี่ยวกับเรื่องนี้ เนื่องจากรหัสห้องสมุดเปิดอยู่และมีอยู่บน GitHub จึงไม่ใช่เรื่องยาก เนื่องจากฉันไม่ใช่แฟนตัวยงของการใช้กล่องดำในโครงการของฉัน ฉันจึงดูซอร์สโค้ดของไลบรารี ตัวอย่างเช่น นี่คือลักษณะกลไกในการประมวลผลตัวแปรตัวเลข ซึ่งแสดงโดยฟังก์ชัน
def describe_numeric_1d(series, **kwargs):
"""Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).
Also create histograms (mini an full) of its distribution.
Parameters
----------
series : Series
The variable to describe.
Returns
-------
Series
The description of the variable as a Series with index being stats keys.
"""
# Format a number as a percentage. For example 0.25 will be turned to 25%.
_percentile_format = "{:.0%}"
stats = dict()
stats['type'] = base.TYPE_NUM
stats['mean'] = series.mean()
stats['std'] = series.std()
stats['variance'] = series.var()
stats['min'] = series.min()
stats['max'] = series.max()
stats['range'] = stats['max'] - stats['min']
# To avoid to compute it several times
_series_no_na = series.dropna()
for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):
# The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098
stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)
stats['iqr'] = stats['75%'] - stats['25%']
stats['kurtosis'] = series.kurt()
stats['skewness'] = series.skew()
stats['sum'] = series.sum()
stats['mad'] = series.mad()
stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN
stats['n_zeros'] = (len(series) - np.count_nonzero(series))
stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)
# Histograms
stats['histogram'] = histogram(series, **kwargs)
stats['mini_histogram'] = mini_histogram(series, **kwargs)
return pd.Series(stats, name=series.name)
แม้ว่าโค้ดชิ้นนี้อาจดูค่อนข้างใหญ่และซับซ้อน แต่จริงๆ แล้วเป็นเรื่องง่ายมากที่จะเข้าใจ ประเด็นก็คือในซอร์สโค้ดของไลบรารีมีฟังก์ชันที่กำหนดประเภทของตัวแปร หากปรากฎว่าไลบรารีพบตัวแปรตัวเลข ฟังก์ชันด้านบนจะค้นหาหน่วยเมตริกที่เรากำลังดูอยู่ ฟังก์ชันนี้ใช้การดำเนินการแพนด้ามาตรฐานสำหรับการทำงานกับวัตถุประเภท Series
, ชอบ series.mean()
. ผลการคำนวณจะถูกจัดเก็บไว้ในพจนานุกรม stats
. ฮิสโตแกรมถูกสร้างขึ้นโดยใช้ฟังก์ชันเวอร์ชันดัดแปลง matplotlib.pyplot.hist
. การปรับเปลี่ยนมีวัตถุประสงค์เพื่อให้แน่ใจว่าฟังก์ชันสามารถทำงานกับชุดข้อมูลประเภทต่างๆ ได้
ศึกษาตัวชี้วัดสหสัมพันธ์และข้อมูลตัวอย่าง
หลังจากผลการวิเคราะห์ตัวแปรแล้ว การทำโปรไฟล์แพนด้าในส่วนสหสัมพันธ์ จะแสดงเมทริกซ์สหสัมพันธ์ของเพียร์สันและสเปียร์แมน
เมทริกซ์สหสัมพันธ์แบบเพียร์สัน
หากจำเป็น คุณสามารถตั้งค่าตัวบ่งชี้ของค่าเกณฑ์ที่ใช้ในการคำนวณความสัมพันธ์ได้ในบรรทัดโค้ดที่ทริกเกอร์การสร้างรายงาน ด้วยการทำเช่นนี้ คุณสามารถระบุได้ว่าจุดแข็งของความสัมพันธ์ที่ถือว่ามีความสำคัญสำหรับการวิเคราะห์ของคุณคืออะไร
สุดท้ายนี้ รายงานการทำโปรไฟล์แพนด้าในส่วนตัวอย่าง จะแสดงชิ้นส่วนข้อมูลที่นำมาจากจุดเริ่มต้นของชุดข้อมูลเป็นตัวอย่าง วิธีการนี้อาจนำไปสู่ความประหลาดใจที่ไม่พึงประสงค์ เนื่องจากการสังเกตสองสามครั้งแรกอาจแสดงถึงตัวอย่างที่ไม่ได้สะท้อนถึงคุณลักษณะของชุดข้อมูลทั้งหมด
ส่วนที่มีข้อมูลตัวอย่างที่อยู่ระหว่างการศึกษา
ด้วยเหตุนี้ ฉันไม่แนะนำให้ใส่ใจกับส่วนสุดท้ายนี้ ควรใช้คำสั่งแทนจะดีกว่า df.sample(5)
โดยจะสุ่มเลือกข้อสังเกต 5 รายการจากชุดข้อมูล
ผลของการ
โดยสรุป ไลบรารีการทำโปรไฟล์ของแพนด้ามอบความสามารถที่เป็นประโยชน์แก่นักวิเคราะห์ซึ่งจะมีประโยชน์ในกรณีที่คุณต้องการรับแนวคิดคร่าวๆ เกี่ยวกับข้อมูลอย่างรวดเร็ว หรือส่งต่อรายงานการวิเคราะห์ข่าวกรองให้กับบุคคลอื่น ในเวลาเดียวกัน การทำงานจริงกับข้อมูลโดยคำนึงถึงคุณสมบัติของข้อมูลนั้นจะดำเนินการด้วยตนเองโดยไม่ต้องใช้การสร้างโปรไฟล์แพนด้า
หากคุณต้องการดูว่าการวิเคราะห์ข้อมูลอัจฉริยะทั้งหมดในสมุดบันทึก Jupyter เล่มเดียวจะเป็นอย่างไร ลองดูที่
เรียนผู้อ่าน! คุณจะเริ่มวิเคราะห์ชุดข้อมูลใหม่จากที่ใด
ที่มา: will.com