Làm cách nào chúng ta có thể tạo một DataFrame python?

Trong khi thực hiện EDA [phân tích dữ liệu khám phá] hoặc phát triển/thử nghiệm các mô hình, người ta thường sử dụng DataFrame mạnh mẽ nhưng thanh lịch của gấu trúc để lưu trữ và thao tác dữ liệu. Và thông thường, nó bắt đầu với việc “tạo một khung dữ liệu”

Tôi thường gặp các tình huống sau khi bắt đầu một số EDA hoặc lập mô hình với gấu trúc

Tôi cần nhanh chóng tạo một khung dữ liệu gồm một vài bản ghi để kiểm tra mã

Tôi cần tải tệp csv hoặc json vào khung dữ liệu

Tôi cần đọc một bảng HTML vào một khung dữ liệu từ một trang web

Tôi cần tải các bản ghi giống như json vào một khung dữ liệu mà không cần tạo tệp json

Tôi cần tải các bản ghi giống như csv vào một khung dữ liệu mà không cần tạo tệp csv

Tôi cần hợp nhất hai khung dữ liệu, theo chiều dọc hoặc chiều ngang

Tôi phải chuyển đổi một cột của khung dữ liệu thành các cột một chiều

Mỗi tình huống này khiến tôi phải google cú pháp hoặc tra cứu tài liệu mỗi lần, cho đến khi tôi dần ghi nhớ chúng sau nhiều tháng và nhiều năm luyện tập

Hiểu được nỗi đau khi tra cứu, tôi nghĩ rằng một bảng tra cứu nhanh về nhiều cách để tạo khung dữ liệu trong gấu trúc có thể tiết kiệm thời gian. Điều này có thể giúp người học cho đến khi họ trở thành nhà phân tích dữ liệu hoặc nhà khoa học dữ liệu dày dạn kinh nghiệm

Vì vậy, đây là một số cách chúng ta có thể tạo một khung dữ liệu. Nếu bất cứ ai đọc điều này tìm thấy những cách hoặc phương pháp tao nhã khác, xin vui lòng bình luận hoặc nhắn tin cho tôi;

Sử dụng hàm tạo DataFrame pd. Khung dữ liệu[]

Hàm tạo pandas DataFrame[] cung cấp nhiều cách khác nhau để tạo và khởi tạo một khung dữ liệu

  • Method 0 — Initialize Blank dataframe and keep adding records. The columns attribute is a list of strings which become columns of the dataframe. DataFrame rows are referenced by the loc method with an index [like lists]. For example, the first record in dataframe df will be referenced by df.loc[0], second record by df.loc[1]. A new row at position i can be directly added by setting df.loc[i] =
# method 0# Initialize a blank dataframe and keep addingdf = pd.DataFrame[columns = ['year','make','model']]# Add records to dataframe using the .loc functiondf.loc[0] = [2014,"toyota","corolla"] 
df.loc[1] = [2018,"honda","civic"]
df
  • Phương pháp 1 - sử dụng mảng có nhiều mảng trong hàm tạo DataFrame. Truyền một mảng numpy 2D - mỗi mảng là hàng tương ứng trong khung dữ liệu
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df

  • Phương pháp 2 - sử dụng từ điển trong hàm tạo DataFrame. Khóa từ điển trở thành tên Cột trong khung dữ liệu. Giá trị từ điển trở thành giá trị của cột. Các giá trị cột được kết hợp trong một hàng theo thứ tự mà chúng được chỉ định
data = {'year': [2014, 2018,2020,2017], 
'make': ["toyota", "honda","hyndai","nissan"],
'model':["corolla", "civic","accent","sentra"]
}

# pass column names in the columns parameter
df = pd.DataFrame[data]
df

  • Phương pháp 3 — sử dụng danh sách từ điển trong hàm tạo DataFrame. Mỗi từ điển là một bản ghi. Khóa từ điển trở thành tên Cột trong khung dữ liệu. Giá trị từ điển trở thành giá trị của cột
data = [{'year': 2014, 'make': "toyota", 'model':"corolla"}, 
{'year': 2018, 'make': "honda", 'model':"civic"},
{'year': 2020, 'make': "hyndai", 'model':"nissan"},
{'year': 2017, 'make': "nissan" ,'model':"sentra"}
]
# pass column names in the columns parameter
df = pd.DataFrame[data]
df

  • Phương pháp 4 — sử dụng từ điển trong phương thức from_dict. Khóa từ điển trở thành tên Cột trong khung dữ liệu. Giá trị từ điển trở thành giá trị của cột. Các giá trị cột được kết hợp trong một hàng theo thứ tự mà chúng được chỉ định
data = {'year': [2014, 2018,2020,2017], 
'make': ["toyota", "honda","hyndai","nissan"],
'model':["corolla", "civic","accent","sentra"]
}

# pass column names in the columns parameter
df = pd.DataFrame.from_dict[data]
df

Ghi chú. Có sự khác biệt giữa phương pháp 2 và 4 mặc dù cả hai đều là từ điển. Sử dụng from_dict, chúng tôi có khả năng chọn bất kỳ cột nào làm chỉ mục của khung dữ liệu. Điều gì sẽ xảy ra nếu các tên cột chúng tôi đã sử dụng ở trên cần phải được lập chỉ mục - giống như chuyển vị của dữ liệu trước đó?

df = pd.DataFrame.from_dict[data, orient='index',columns=['record1', 'record2', 'record3', 'record4']]
df

Sử dụng các hàm thư viện pandas — read_csv, read_json

  • Phương pháp 5 — Từ tệp csv bằng phương pháp read_csv của thư viện pandas. Đây là một trong những cách phổ biến nhất để tạo khung dữ liệu cho EDA. Dấu phân cách [hoặc dấu phân cách], tiêu đề và lựa chọn cột chỉ mục từ tệp csv có thể định cấu hình. Theo mặc định, dấu phân cách là dấu phẩy, tiêu đề được suy ra từ dòng đầu tiên nếu tìm thấy, cột chỉ mục không được lấy từ tệp. Đây là cách tập tin trông giống như

df = pd.read_csv['data.csv' , sep = ',', header = 'infer', index_col = None]
df

  • Phương pháp 6 — Từ một chuỗi bản ghi csv sử dụng phương thức read_csv của thư viện pandas. Điều này đặc biệt hữu ích khi chúng tôi không muốn tạo tệp nhưng chúng tôi có các cấu trúc bản ghi tiện dụng - tất cả những gì chúng tôi làm là chuyển đổi bản ghi csv “chuỗi” thành một tệp xử lý bằng chức năng thư viện StringIO
from io import StringIO# f is a file handle created from a csv like stringf = StringIO['year,make,model\n2014,toyota,corolla\n2018,honda,civic\n2020,hyndai,accent\n2017,nissan,sentra']df = pd.read_csv[f]
df

  • Phương pháp 7 — Từ tệp json sử dụng phương thức read_json của thư viện pandas khi tệp json có một bản ghi trong mỗi dòng. Đặt lines=True mean Đọc tệp dưới dạng đối tượng json trên mỗi dòng. Đây là cách tệp json trông như thế nào

________số 8

  • Phương pháp 8 — Từ chuỗi bản ghi json sử dụng phương thức read_json của thư viện gấu trúc. Điều này đặc biệt hữu ích khi chúng tôi không muốn tạo tệp nhưng chúng tôi có cấu trúc bản ghi json tiện dụng
from io import StringIO# f is a file handle created from json like stringf = StringIO['{"year": "2014", "make": "toyota", "model": "corolla"}\n{"year": "2018", "make": "honda", "model": "civic"}\n{"year": "2020", "make": "hyndai", "model": "accent"}\n{"year": "2017", "make": "nissan", "model": "sentra"}']df = pd.read_json[f,lines=True]
df

  • Phương pháp 9 — Một trong những cách thú vị nhất — đọc các bảng từ trang HTML bằng thư viện pandas được tích hợp trong read_html. Điều này tạo ra một danh sách các khung dữ liệu; . Ngay cả khi chỉ có một bảng trong trang, một danh sách các khung dữ liệu được tạo - vì vậy nó cần được truy cập bằng cách sử dụng chỉ số dưới danh sách. Ví dụ dưới đây cho thấy cách chụp một trang HTML và sau đó tải các bảng — điều này sử dụng thư viện yêu cầu để lấy nội dung HTML
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
0

Từ các khung dữ liệu khác
  • Phương pháp 10 - Là một bản sao của một khung dữ liệu khác
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
1

Ghi chú. Hai phương thức hiển thị ở trên là khác nhau - hàm copy[] tạo một đối tượng khung dữ liệu hoàn toàn mới độc lập với đối tượng gốc trong khi phương thức sao chép biến chỉ tạo một biến bí danh cho khung dữ liệu gốc - không có đối tượng khung dữ liệu mới nào được tạo. Nếu có bất kỳ thay đổi nào đối với khung dữ liệu gốc, nó cũng được phản ánh trong bí danh như hình bên dưới

# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
2

# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
3

  • Phương pháp 11 - Nối theo chiều dọc - cái này chồng lên cái kia
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
4

Trong ví dụ trên, chỉ mục của khung dữ liệu thứ 2 được giữ nguyên trong khung dữ liệu được nối. Để đặt lại các chỉ mục khớp với toàn bộ khung dữ liệu, hãy sử dụng hàm reset_index[] của khung dữ liệu

# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
5

  • Phương pháp 12 — Nối ngang — nối cạnh nhau, không nối bằng bất kỳ phím nào
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
6

GHI CHÚ. Đối với nối ngang,

  • Các hàng của khung dữ liệu được nối theo thứ tự vị trí của chúng [chỉ mục]
  • Nếu có bất kỳ bản ghi nào bị thiếu trong một trong các khung dữ liệu, thì các bản ghi tương ứng trong khung dữ liệu được nối là NaN. Điều này giống như thực hiện nối ngoài bên trái trên chỉ mục [xem hợp nhất bên dưới]

  • Phương pháp 13 - Nối ngang - tương đương với phép nối SQL

tham gia bên trong

# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
7

Chỗ nối bên trái

# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
8

  • Phương pháp 14 - Là một chuyển vị của một khung dữ liệu khác
# Pass a 2D numpy array - each row is the corresponding row required in the dataframe

data = np.array[[[2014,"toyota","corolla"],
[2018,"honda","civic"],
[2020,"hyndai","accent"],
[2017,"nissan","sentra"]]]

# pass column names in the columns parameter
df = pd.DataFrame[data, columns = ['year', 'make','model']]
df
9

  • Phương pháp 15 — Chuyển đổi sang các cột one-hot [được sử dụng để lập mô hình với các thuật toán học tập] bằng hàm pandas get_dummies

One-Hot về cơ bản là chuyển đổi một giá trị cột thành một tập hợp các cột dẫn xuất như Biểu diễn nhị phân Bất kỳ một trong các tập hợp cột one-hot là 1 và phần còn lại là 0

Nếu chúng ta biết rằng một chiếc ô tô có các loại thân xe = SEDAN, SUV, VAN, TRUCK, thì một chiếc Toyota corolla có thân xe = ‘SEDAN’ sẽ được mã hóa một lần thành

data = {'year': [2014, 2018,2020,2017], 
'make': ["toyota", "honda","hyndai","nissan"],
'model':["corolla", "civic","accent","sentra"]
}

# pass column names in the columns parameter
df = pd.DataFrame[data]
df
0

Each one hot column is basically of the format _

Dưới đây là một ví dụ

data = {'year': [2014, 2018,2020,2017], 
'make': ["toyota", "honda","hyndai","nissan"],
'model':["corolla", "civic","accent","sentra"]
}

# pass column names in the columns parameter
df = pd.DataFrame[data]
df
1

Tôi hy vọng “cheat-sheet” này sẽ giúp ích trong giai đoạn đầu học EDA hoặc lập mô hình. Chắc chắn với thời gian và luyện tập liên tục, tất cả những điều này sẽ được ghi nhớ

Tất cả những điều tốt nhất sau đó. ]

Hãy chia sẻ các đầu vào có giá trị của bạn nếu bạn có bất kỳ cách tạo khung dữ liệu tao nhã nào khác hoặc nếu có bất kỳ chức năng mới nào có thể tạo khung dữ liệu cho một số mục đích cụ thể

Phương pháp tạo DataFrame là gì?

Do đó, phương pháp đầu tiên và quan trọng nhất để tạo khung dữ liệu là đọc tệp csv , đây là thao tác đơn giản trong Pandas. Chúng ta chỉ cần cung cấp đường dẫn tệp cho hàm read_csv. Hàm read_csv rất linh hoạt. Nó có một số tham số cho phép sửa đổi tệp csv trong khi đọc.

Làm cách nào để tạo tập dữ liệu trong Python?

Làm cách nào để tạo Tập dữ liệu bằng Python? .
Để tạo tập dữ liệu cho bài toán phân loại với python, chúng ta sử dụng phương thức make_classification có sẵn trong thư viện sci-kit learn. .
Phương thức make_classification trả về theo mặc định, ndarrays tương ứng với biến/tính năng và mục tiêu/đầu ra

Các cách khác nhau để tạo DataFrame trong Python là gì?

5 cách tạo khung dữ liệu Pandas bằng Python .
Tạo pandas DataFrame từ từ điển danh sách. .
Tạo pandas DataFrame từ từ điển của mảng numpy. .
Tạo pandas DataFrame từ danh sách các danh sách. .
Tạo pandas DataFrame từ danh sách từ điển. .
Tạo pandas Dataframe từ dictionary of pandas Series

Chủ Đề