แนะนำ PySpark DataFrames

PySpark เบื้องต้น

Benjamin Schmidt

Data Engineer

เกี่ยวกับ DataFrames

  • DataFrame: รูปแบบตาราง (แถว/คอลัมน์)
  • รองรับการดำเนินการแบบ SQL
  • คล้ายกับ Pandas DataFrame หรือ SQL TABLE
  • ข้อมูลเชิงโครงสร้าง

DataFrames

PySpark เบื้องต้น

การสร้าง DataFrame จาก filestore

# Create a DataFrame from CSV
census_df = spark.read.csv('path/to/census.csv', header=True, inferSchema=True)
PySpark เบื้องต้น

แสดงผล DataFrame

# Show the first 5 rows of the DataFrame
census_df.show()


   age  education.num marital.status         occupation income
0   90              9        Widowed                  ?  <=50K
1   82              9        Widowed    Exec-managerial  <=50K
2   66             10        Widowed                  ?  <=50K
3   54              4       Divorced  Machine-op-inspct  <=50K
4   41             10      Separated     Prof-specialty  <=50K
PySpark เบื้องต้น

แสดง Schema ของ DataFrame

# Show the schema
census_df.printSchema()

Output: root |-- age: integer (nullable = true) |-- education.num: integer (nullable = true) |-- marital.status: string (nullable = true) |-- occupation: string (nullable = true) |-- income: string (nullable = true)
PySpark เบื้องต้น

การวิเคราะห์เบื้องต้นบน PySpark DataFrames

# .count() will return the total row numbers in the DataFrame
row_count = census_df.count()
print(f'Number of rows: {row_count}')
# groupby() allows the use of sql-like aggregations
census_df.groupBy('gender').agg({'salary_usd': 'avg'}).show()

ฟังก์ชัน aggregate อื่น ๆ ได้แก่:

  • sum()
  • min()
  • max()
PySpark เบื้องต้น

ฟังก์ชันหลักสำหรับ PySpark analytics

  • .select(): เลือกคอลัมน์ที่ต้องการจาก DataFrame
  • .filter(): กรองแถวตามเงื่อนไขที่กำหนด
  • .groupBy(): จัดกลุ่มแถวตามคอลัมน์หนึ่งคอลัมน์หรือมากกว่า
  • .agg(): ใช้ฟังก์ชัน aggregate กับข้อมูลที่จัดกลุ่มแล้ว
PySpark เบื้องต้น

ตัวอย่างการใช้ฟังก์ชันหลัก

# Using filter and select, we can narrow down our DataFrame
filtered_census_df = census_df.filter(df['age'] > 50).select('age', 'occupation')
filtered_census_df.show()

Output +---+------------------+ |age| occupation | +---+------------------+ | 90| ?| | 82| Exec-managerial| | 66| ?| | 54| Machine-op-inspct| +---+------------------+
PySpark เบื้องต้น

มาฝึกกันเถอะ!

PySpark เบื้องต้น

Preparing Video For Download...