Làm thế nào để bạn chuyển đổi một khung dữ liệu trong python?

Trong bài viết này, chúng ta sẽ hiểu danh sách và khung dữ liệu là gì. Chúng tôi cũng sẽ nghiên cứu các cách khác nhau để chuyển đổi danh sách thành khung dữ liệu trong lập trình python. Điều này cũng trả lời cách tạo khung dữ liệu gấu trúc từ danh sách trong python. Vậy hãy bắt đầu

Danh sách là gì?

List là kiểu dữ liệu quan trọng nhất trong lập trình python. Trong Python, danh sách được viết dưới dạng danh sách các giá trị được phân tách bằng dấu phẩy bên trong dấu ngoặc vuông. Ưu điểm quan trọng nhất của danh sách là các phần tử bên trong danh sách không bắt buộc phải có cùng kiểu dữ liệu cùng với việc lập chỉ mục phủ định. Ngoài ra, mọi thao tác của chuỗi cũng được áp dụng tương tự trên kiểu dữ liệu danh sách như cắt, nối, v.v. Ngoài ra, chúng ta có thể tạo một danh sách lồng nhau. e. danh sách chứa danh sách khác

Ví dụ

# creating a list of items with different data types

sample_list = [10,"favtutor",['A','B']]

print(sample_list)

 

đầu ra

[10, 'favtutor', ['A', 'B']]

 

Khung dữ liệu là gì?

Pandas là một thư viện phần mềm được viết cho ngôn ngữ lập trình Python để thao tác và phân tích dữ liệu. Pandas Dataframe là cấu trúc dữ liệu dạng bảng có thể thay đổi kích thước hai chiều, có khả năng không đồng nhất với các trục được gắn nhãn (hàng và cột). Khung dữ liệu có thể là cấu trúc dữ liệu hai chiều, tôi. e. , kiến ​​thức được sắp xếp theo kiểu bảng rất rõ ràng trong các hàng và cột. Pandas Dataframe bao gồm 3 thành phần chính là dữ liệu, hàng và cột

Ví dụ

import pandas as pd

# list of strings

lst = ['fav', 'tutor', 'coding', 'skills']
df = pd.DataFrame(lst)
print(df)

 

đầu ra

       0
0     fav
1   tutor
2  coding
3  skills

 

Làm thế nào để bạn chuyển đổi một khung dữ liệu trong python?

Chuyển đổi danh sách thành DataFrame trong Python

Có nhiều cách để tạo khung dữ liệu từ danh sách. Chúng ta sẽ xem xét 6 phương pháp khác nhau để chuyển đổi danh sách từ khung dữ liệu trong Python. Hãy để chúng tôi nghiên cứu từng cái một với một ví dụ

(Spark với Python) Khung dữ liệu PySpark có thể được chuyển đổi thành Khung dữ liệu gấu trúc Python bằng hàm

[10, 'favtutor', ['A', 'B']]
3, Trong bài viết này, tôi sẽ giải thích cách tạo Khung dữ liệu Pandas từ Khung dữ liệu PySpark (Spark) với các ví dụ

Trước khi chúng tôi bắt đầu, trước tiên hãy hiểu sự khác biệt chính giữa Pandas & PySpark, các hoạt động trên Pyspark chạy nhanh hơn Pandas do tính chất phân tán và thực thi song song trên nhiều lõi và máy

Nói cách khác, gấu trúc chạy các hoạt động trên một nút trong khi PySpark chạy trên nhiều máy. Nếu bạn đang làm việc trên một ứng dụng Máy học nơi bạn đang xử lý các tập dữ liệu lớn hơn, thì PySpark sẽ xử lý các hoạt động nhanh hơn nhiều lần so với gấu trúc. Tham khảo hướng dẫn dành cho người mới bắt đầu với pandas DataFrame Tutorial với các ví dụ

Sau khi xử lý dữ liệu trong PySpark, chúng tôi sẽ cần chuyển đổi dữ liệu đó trở lại Pandas DataFrame để tiếp tục xử lý với ứng dụng Machine Learning hoặc bất kỳ ứng dụng Python nào

Chuẩn bị Khung dữ liệu PySpark

Để giải thích bằng một ví dụ, trước tiên hãy tạo một Khung dữ liệu PySpark


import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()

data = [("James","","Smith","36636","M",60000),
        ("Michael","Rose","","40288","M",70000),
        ("Robert","","Williams","42114","",400000),
        ("Maria","Anne","Jones","39192","F",500000),
        ("Jen","Mary","Brown","","F",0)]

columns = ["first_name","middle_name","last_name","dob","gender","salary"]
pysparkDF = spark.createDataFrame(data = data, schema = columns)
pysparkDF.printSchema()
pysparkDF.show(truncate=False)

Điều này mang lại lược đồ bên dưới và kết quả của DataFrame


root
 |-- first_name: string (nullable = true)
 |-- middle_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- dob: string (nullable = true)
 |-- gender: string (nullable = true)
 |-- salary: long (nullable = true)

+----------+-----------+---------+-----+------+------+
|first_name|middle_name|last_name|dob  |gender|salary|
+----------+-----------+---------+-----+------+------+
|James     |           |Smith    |36636|M     |60000 |
|Michael   |Rose       |         |40288|M     |70000 |
|Robert    |           |Williams |42114|      |400000|
|Maria     |Anne       |Jones    |39192|F     |500000|
|Jen       |Mary       |Brown    |     |F     |0     |
+----------+-----------+---------+-----+------+------+

Chuyển đổi khung dữ liệu PySpark sang khung dữ liệu Pandas

PySpark DataFrame cung cấp một phương thức

[10, 'favtutor', ['A', 'B']]
3 để chuyển đổi nó thành Python Pandas DataFrame

[10, 'favtutor', ['A', 'B']]
3 dẫn đến việc thu thập tất cả các bản ghi trong Khung dữ liệu PySpark cho chương trình trình điều khiển và chỉ được thực hiện trên một tập hợp con nhỏ của dữ liệu. chạy trên tập dữ liệu lớn hơn dẫn đến lỗi bộ nhớ và làm hỏng ứng dụng. Để xử lý tập dữ liệu lớn hơn, bạn cũng có thể thử tăng bộ nhớ trên trình điều khiển


pandasDF = pysparkDF.toPandas()
print(pandasDF)

Điều này mang lại DataFrame của gấu trúc bên dưới. Lưu ý rằng gấu trúc thêm số thứ tự vào kết quả dưới dạng Chỉ mục hàng. Bạn có thể đổi tên các cột pandas bằng cách sử dụng hàm rename()


  first_name middle_name last_name    dob gender  salary
0      James                 Smith  36636      M   60000
1    Michael        Rose            40288      M   70000
2     Robert              Williams  42114         400000
3      Maria        Anne     Jones  39192      F  500000
4        Jen        Mary     Brown             F       0

Tôi đã dành riêng Hướng dẫn về gấu trúc Python với các ví dụ trong đó tôi đã giải thích chi tiết các khái niệm về gấu trúc

Chuyển đổi Khung dữ liệu cấu trúc lồng nhau Spark thành Pandas

Hầu hết dữ liệu trong PySpark DataFrame sẽ ở định dạng có cấu trúc, nghĩa là một cột chứa các cột khác, vì vậy hãy xem cách nó chuyển đổi thành Pandas. Dưới đây là một ví dụ với cấu trúc lồng nhau trong đó chúng tôi có

[10, 'favtutor', ['A', 'B']]
6,

root
 |-- first_name: string (nullable = true)
 |-- middle_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- dob: string (nullable = true)
 |-- gender: string (nullable = true)
 |-- salary: long (nullable = true)

+----------+-----------+---------+-----+------+------+
|first_name|middle_name|last_name|dob  |gender|salary|
+----------+-----------+---------+-----+------+------+
|James     |           |Smith    |36636|M     |60000 |
|Michael   |Rose       |         |40288|M     |70000 |
|Robert    |           |Williams |42114|      |400000|
|Maria     |Anne       |Jones    |39192|F     |500000|
|Jen       |Mary       |Brown    |     |F     |0     |
+----------+-----------+---------+-----+------+------+
0 và

root
 |-- first_name: string (nullable = true)
 |-- middle_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- dob: string (nullable = true)
 |-- gender: string (nullable = true)
 |-- salary: long (nullable = true)

+----------+-----------+---------+-----+------+------+
|first_name|middle_name|last_name|dob  |gender|salary|
+----------+-----------+---------+-----+------+------+
|James     |           |Smith    |36636|M     |60000 |
|Michael   |Rose       |         |40288|M     |70000 |
|Robert    |           |Williams |42114|      |400000|
|Maria     |Anne       |Jones    |39192|F     |500000|
|Jen       |Mary       |Brown    |     |F     |0     |
+----------+-----------+---------+-----+------+------+
1 là một phần của cột

root
 |-- first_name: string (nullable = true)
 |-- middle_name: string (nullable = true)
 |-- last_name: string (nullable = true)
 |-- dob: string (nullable = true)
 |-- gender: string (nullable = true)
 |-- salary: long (nullable = true)

+----------+-----------+---------+-----+------+------+
|first_name|middle_name|last_name|dob  |gender|salary|
+----------+-----------+---------+-----+------+------+
|James     |           |Smith    |36636|M     |60000 |
|Michael   |Rose       |         |40288|M     |70000 |
|Robert    |           |Williams |42114|      |400000|
|Maria     |Anne       |Jones    |39192|F     |500000|
|Jen       |Mary       |Brown    |     |F     |0     |
+----------+-----------+---------+-----+------+------+
2

[10, 'favtutor', ['A', 'B']]
1

Chuyển đổi DataFrame có cấu trúc sang Pandas DataFrame kết quả bên dưới đầu ra

[10, 'favtutor', ['A', 'B']]
2

Sự kết luận

Trong bài viết đơn giản này, bạn đã học cách chuyển đổi Spark DataFrame thành gấu trúc bằng hàm

[10, 'favtutor', ['A', 'B']]
3 của Spark DataFrame. cũng đã thấy một ví dụ tương tự với các phần tử cấu trúc lồng nhau phức tạp.
[10, 'favtutor', ['A', 'B']]
3 dẫn đến việc thu thập tất cả các bản ghi trong DataFrame cho chương trình trình điều khiển và phải được thực hiện trên một tập hợp con nhỏ của dữ liệu