Làm thế nào để bạn đọc dữ liệu từ một đối tượng trong python?

Ở cấp độ rất cơ bản, các đối tượng Pandas có thể được coi là phiên bản nâng cao của mảng có cấu trúc NumPy trong đó các hàng và cột được xác định bằng nhãn thay vì chỉ số nguyên đơn giản. Như chúng ta sẽ thấy trong suốt chương này, Pandas cung cấp một loạt các công cụ, phương pháp và chức năng hữu ích trên các cấu trúc dữ liệu cơ bản, nhưng gần như mọi thứ tiếp theo sẽ yêu cầu hiểu biết về những cấu trúc này là gì. Vì vậy, trước khi chúng ta đi xa hơn, hãy giới thiệu ba cấu trúc dữ liệu Pandas cơ bản này. các

RangeIndex(start=0, stop=4, step=1)
8,
RangeIndex(start=0, stop=4, step=1)
9, và
data[1]
0

Chúng tôi sẽ bắt đầu các phiên mã của mình với các lần nhập NumPy và Pandas tiêu chuẩn

Trong 1]

import numpy as np
import pandas as pd

Đối tượng sê-ri Pandas¶

Pandas

RangeIndex(start=0, stop=4, step=1)
8 là một mảng dữ liệu được lập chỉ mục một chiều. Nó có thể được tạo từ một danh sách hoặc mảng như sau

Trong 2]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data

Ra[2]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64

Như chúng ta thấy ở đầu ra,

RangeIndex(start=0, stop=4, step=1)
8 bao bọc cả một chuỗi các giá trị và một chuỗi các chỉ số mà chúng ta có thể truy cập bằng các thuộc tính
data[1]
3 và
data[1]
4.
data[1]
3 chỉ đơn giản là một mảng NumPy quen thuộc

Trong 3]

RangeIndex(start=0, stop=4, step=1)
1

Ra[3]

RangeIndex(start=0, stop=4, step=1)
2

data[1]
4 là một đối tượng giống như mảng của loại
data[1]
7, mà chúng ta sẽ thảo luận chi tiết hơn trong giây lát

Trong [4]

RangeIndex(start=0, stop=4, step=1)
5

Ra[4]

RangeIndex(start=0, stop=4, step=1)

Giống như với một mảng NumPy, dữ liệu có thể được truy cập bằng chỉ mục được liên kết thông qua ký hiệu dấu ngoặc vuông Python quen thuộc

Trong [5]

data[1]

Ra[5]

RangeIndex(start=0, stop=4, step=1)
8

Trong [6]

RangeIndex(start=0, stop=4, step=1)
9

Ra[6]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
0

Tuy nhiên, như chúng ta sẽ thấy, Pandas

RangeIndex(start=0, stop=4, step=1)
8 tổng quát và linh hoạt hơn nhiều so với mảng NumPy một chiều mà nó mô phỏng

RangeIndex(start=0, stop=4, step=1)8 dưới dạng mảng NumPy tổng quát¶

Từ những gì chúng ta đã thấy cho đến nay, có vẻ như đối tượng

RangeIndex(start=0, stop=4, step=1)
8 về cơ bản có thể hoán đổi cho nhau với mảng NumPy một chiều. Sự khác biệt cơ bản là sự hiện diện của chỉ số. trong khi Mảng Numpy có chỉ mục số nguyên được xác định ngầm được sử dụng để truy cập các giá trị, thì Pandas
RangeIndex(start=0, stop=4, step=1)
8 có chỉ mục được xác định rõ ràng được liên kết với các giá trị

Định nghĩa chỉ mục rõ ràng này cung cấp cho đối tượng

RangeIndex(start=0, stop=4, step=1)
8 các khả năng bổ sung. Ví dụ: chỉ mục không nhất thiết phải là số nguyên nhưng có thể bao gồm các giá trị thuộc bất kỳ loại mong muốn nào. Ví dụ: nếu muốn, chúng ta có thể sử dụng chuỗi làm chỉ mục

Trong [7]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
1

Ra[7]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
2

Và quyền truy cập mục hoạt động như mong đợi

Trong [8]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
3

Ra[8]

RangeIndex(start=0, stop=4, step=1)
8

Chúng tôi thậm chí có thể sử dụng các chỉ số không liền kề hoặc không tuần tự

Trong [9]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
5

Ra[9]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
6

Trong [10]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
7

Ra[10]

RangeIndex(start=0, stop=4, step=1)
8

Series như từ điển chuyên ngành¶

Theo cách này, bạn có thể nghĩ về một

RangeIndex(start=0, stop=4, step=1)
8 của Pandas giống như một chuyên ngành của từ điển Python. Từ điển là cấu trúc ánh xạ các khóa tùy ý thành một tập hợp các giá trị tùy ý và
RangeIndex(start=0, stop=4, step=1)
8 là cấu trúc ánh xạ các khóa đã nhập thành một tập hợp các giá trị đã nhập. Việc gõ này rất quan trọng. giống như mã được biên dịch theo loại cụ thể đằng sau một mảng NumPy làm cho nó hiệu quả hơn danh sách Python cho một số thao tác nhất định, thông tin loại của Pandas
RangeIndex(start=0, stop=4, step=1)
8 làm cho nó hiệu quả hơn nhiều so với từ điển Python cho một số thao tác nhất định

Sự tương tự của từ điển

RangeIndex(start=0, stop=4, step=1)
8 thậm chí có thể được làm rõ hơn bằng cách xây dựng một đối tượng
RangeIndex(start=0, stop=4, step=1)
8 trực tiếp từ một từ điển Python

Trong [11]

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
9

Ra[11]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
0

Theo mặc định, một

RangeIndex(start=0, stop=4, step=1)
8 sẽ được tạo khi chỉ mục được rút ra từ các khóa được sắp xếp. Từ đây, có thể thực hiện truy cập mục kiểu từ điển điển hình

Trong [12]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
1

Ra[12]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
2

Tuy nhiên, không giống như từ điển,

RangeIndex(start=0, stop=4, step=1)
8 cũng hỗ trợ các thao tác kiểu mảng chẳng hạn như cắt

Trong [13]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
3

Ra[13]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
4

Chúng ta sẽ thảo luận về một số điều kỳ quặc của việc lập chỉ mục và cắt Pandas trong Lựa chọn và lập chỉ mục dữ liệu

Xây dựng đối tượng Series¶

Chúng ta đã thấy một số cách xây dựng Pandas

RangeIndex(start=0, stop=4, step=1)
8 từ đầu;

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
5

trong đó

data[1]
4 là một đối số tùy chọn và
RangeIndex(start=0, stop=4, step=1)
92 có thể là một trong nhiều thực thể

Ví dụ:

RangeIndex(start=0, stop=4, step=1)
92 có thể là một danh sách hoặc mảng NumPy, trong trường hợp đó,
data[1]
4 mặc định là một chuỗi số nguyên

Trong [14]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
6

Ra[14]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
7

RangeIndex(start=0, stop=4, step=1)
92 có thể là vô hướng, được lặp lại để điền vào chỉ mục đã chỉ định

Trong [15]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
8

Ra[15]

0    0.25
1    0.50
2    0.75
3    1.00
dtype: float64
9

RangeIndex(start=0, stop=4, step=1)
92 có thể là một từ điển, trong đó
data[1]
4 mặc định là các khóa từ điển đã sắp xếp

Trong [16]

RangeIndex(start=0, stop=4, step=1)
10

Ra[16]

RangeIndex(start=0, stop=4, step=1)
11

Trong mỗi trường hợp, chỉ mục có thể được đặt rõ ràng nếu ưu tiên một kết quả khác

Trong [17]

RangeIndex(start=0, stop=4, step=1)
12

Ra[17]

RangeIndex(start=0, stop=4, step=1)
13

Lưu ý rằng trong trường hợp này,

RangeIndex(start=0, stop=4, step=1)
8 chỉ được điền bằng các khóa được xác định rõ ràng

Đối tượng khung dữ liệu Pandas¶

Cấu trúc cơ bản tiếp theo trong Pandas là

RangeIndex(start=0, stop=4, step=1)
9. Giống như đối tượng
RangeIndex(start=0, stop=4, step=1)
8 đã thảo luận trong phần trước,
RangeIndex(start=0, stop=4, step=1)
9 có thể được coi là dạng tổng quát hóa của mảng NumPy hoặc dạng đặc biệt hóa của từ điển Python. Bây giờ chúng ta sẽ xem xét từng quan điểm này

DataFrame dưới dạng mảng NumPy tổng quát¶

Nếu một

RangeIndex(start=0, stop=4, step=1)
8 là một dạng tương tự của mảng một chiều với các chỉ số linh hoạt, thì một
RangeIndex(start=0, stop=4, step=1)
9 là một dạng tương tự của một mảng hai chiều với cả chỉ số hàng linh hoạt và tên cột linh hoạt. Giống như bạn có thể nghĩ về một mảng hai chiều như một chuỗi các cột một chiều được sắp xếp theo thứ tự, bạn có thể nghĩ về một
RangeIndex(start=0, stop=4, step=1)
9 như một chuỗi các đối tượng
RangeIndex(start=0, stop=4, step=1)
8 được căn chỉnh. Ở đây, "căn chỉnh" có nghĩa là chúng chia sẻ cùng một chỉ mục

Để chứng minh điều này, trước tiên chúng ta hãy xây dựng một

RangeIndex(start=0, stop=4, step=1)
8 mới liệt kê diện tích của từng bang trong số 5 bang đã thảo luận trong phần trước

Trong [18]

RangeIndex(start=0, stop=4, step=1)
14

Hết[18]

RangeIndex(start=0, stop=4, step=1)
15

Bây giờ chúng ta có cái này cùng với Sê-ri

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
07 từ trước, chúng ta có thể sử dụng từ điển để xây dựng một đối tượng hai chiều duy nhất chứa thông tin này

Trong 19]

RangeIndex(start=0, stop=4, step=1)
16

Hết[19]

khu vựcdân sốCalifornia42396738332521Florida17031219552860Illinois14999512882135New York14129719651127Texas69566226448193

Giống như đối tượng

RangeIndex(start=0, stop=4, step=1)
8,
RangeIndex(start=0, stop=4, step=1)
9 có thuộc tính
data[1]
4 cho phép truy cập vào nhãn chỉ mục

Trong 20]

RangeIndex(start=0, stop=4, step=1)
17

Hết[20]

RangeIndex(start=0, stop=4, step=1)
18

Ngoài ra,

RangeIndex(start=0, stop=4, step=1)
9 có thuộc tính
data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
12, là đối tượng
data[1]
0 giữ nhãn cột

Trong [21]

RangeIndex(start=0, stop=4, step=1)
19

Hết[21]

RangeIndex(start=0, stop=4, step=1)
20

Do đó,

RangeIndex(start=0, stop=4, step=1)
9 có thể được coi là tổng quát hóa của mảng NumPy hai chiều, trong đó cả hàng và cột đều có chỉ mục tổng quát để truy cập dữ liệu

DataFrame dưới dạng từ điển chuyên ngành¶

Tương tự, chúng ta cũng có thể coi

RangeIndex(start=0, stop=4, step=1)
9 là một chuyên ngành của từ điển. Trong trường hợp một từ điển ánh xạ một khóa tới một giá trị, một
RangeIndex(start=0, stop=4, step=1)
9 ánh xạ một tên cột tới một
RangeIndex(start=0, stop=4, step=1)
8 dữ liệu cột. Ví dụ: yêu cầu thuộc tính
data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
18 trả về đối tượng
RangeIndex(start=0, stop=4, step=1)
8 chứa các khu vực mà chúng ta đã thấy trước đó

Trong [22]

RangeIndex(start=0, stop=4, step=1)
21

Hết[22]

RangeIndex(start=0, stop=4, step=1)
22

Lưu ý điểm có thể gây nhầm lẫn ở đây. trong mảng NumPy hai chiều, ________ 520 sẽ trả về hàng đầu tiên. Đối với một

RangeIndex(start=0, stop=4, step=1)
9,
data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
22 sẽ trả về cột đầu tiên. Do đó, có lẽ tốt hơn nên nghĩ về các
RangeIndex(start=0, stop=4, step=1)
9 như những từ điển tổng quát hơn là các mảng tổng quát, mặc dù cả hai cách xem xét tình huống đều có thể hữu ích. Chúng ta sẽ khám phá các phương tiện lập chỉ mục linh hoạt hơn cho các
RangeIndex(start=0, stop=4, step=1)
9 trong Lựa chọn và lập chỉ mục dữ liệu

Xây dựng các đối tượng DataFrame¶

Pandas

RangeIndex(start=0, stop=4, step=1)
9 có thể được xây dựng theo nhiều cách khác nhau. Ở đây chúng tôi sẽ đưa ra một số ví dụ

Từ một đối tượng Sê-ri đơn lẻ¶

Một

RangeIndex(start=0, stop=4, step=1)
9 là một tập hợp của các đối tượng
RangeIndex(start=0, stop=4, step=1)
8 và một cột đơn
RangeIndex(start=0, stop=4, step=1)
9 có thể được tạo từ một
RangeIndex(start=0, stop=4, step=1)
8 đơn lẻ

Trong [23]

RangeIndex(start=0, stop=4, step=1)
23

Hết[23]

dân sốCalifornia38332521Florida19552860Illinois12882135New York19651127Texas26448193

Từ một danh sách các lệnh¶

Bất kỳ danh sách từ điển nào cũng có thể được tạo thành một

RangeIndex(start=0, stop=4, step=1)
9. Chúng tôi sẽ sử dụng cách hiểu danh sách đơn giản để tạo một số dữ liệu

Trong [24]

RangeIndex(start=0, stop=4, step=1)
24

Ra[24]

ab000112224

Ngay cả khi một số khóa trong từ điển bị thiếu, Pandas sẽ điền chúng vào bằng

data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
31 (i. e. , giá trị "không phải là số")

Trong [25]

RangeIndex(start=0, stop=4, step=1)
25

Hết[25]

abc01. 02NaN1NaN34. 0

Từ một từ điển các đối tượng Sê-ri¶

Như chúng ta đã thấy trước đây, một

RangeIndex(start=0, stop=4, step=1)
9 cũng có thể được xây dựng từ một từ điển gồm các đối tượng
RangeIndex(start=0, stop=4, step=1)
8

Trong [26]

RangeIndex(start=0, stop=4, step=1)
26

Hết[26]

khu vựcdân sốCalifornia42396738332521Florida17031219552860Illinois14999512882135New York14129719651127Texas69566226448193

Từ mảng NumPy hai chiều¶

Với một mảng dữ liệu hai chiều, chúng ta có thể tạo một

RangeIndex(start=0, stop=4, step=1)
9 với bất kỳ tên chỉ mục và cột được chỉ định nào. Nếu bỏ qua, một chỉ mục số nguyên sẽ được sử dụng cho mỗi

Trong [27]

RangeIndex(start=0, stop=4, step=1)
27

Hết[27]

foobara0. 8652570. 213169b0. 4427590. 108267c0. 0471100. 905718

Từ một mảng có cấu trúc NumPy¶

Chúng tôi đã đề cập đến các mảng có cấu trúc trong Dữ liệu có cấu trúc. Mảng có cấu trúc của NumPy. Pandas

RangeIndex(start=0, stop=4, step=1)
9 hoạt động giống như một mảng có cấu trúc và có thể được tạo trực tiếp từ một

Trong [28]

RangeIndex(start=0, stop=4, step=1)
28

Hết[28]

RangeIndex(start=0, stop=4, step=1)
29

Trong [29]

RangeIndex(start=0, stop=4, step=1)
50

Hết[29]

AB000. 0100. 0200. 0

Đối tượng chỉ mục Pandas¶

Ở đây chúng ta đã thấy rằng cả hai đối tượng

RangeIndex(start=0, stop=4, step=1)
8 và
RangeIndex(start=0, stop=4, step=1)
9 đều chứa một chỉ mục rõ ràng cho phép bạn tham khảo và sửa đổi dữ liệu. Bản thân đối tượng
data[1]
0 này là một cấu trúc thú vị và nó có thể được coi là một mảng bất biến hoặc là một tập hợp có thứ tự (về mặt kỹ thuật là nhiều tập hợp, vì đối tượng
data[1]
0 có thể chứa các giá trị lặp lại). Những quan điểm đó có một số hậu quả thú vị trong các hoạt động có sẵn trên các đối tượng
data[1]
0. Ví dụ đơn giản, hãy xây dựng một
data[1]
0 từ danh sách các số nguyên

Trong [30]

RangeIndex(start=0, stop=4, step=1)
51

Ra[30]

RangeIndex(start=0, stop=4, step=1)
52

Lập chỉ mục dưới dạng mảng bất biến¶

data[1]
0 theo nhiều cách hoạt động giống như một mảng. Ví dụ: chúng ta có thể sử dụng ký hiệu lập chỉ mục Python tiêu chuẩn để truy xuất các giá trị hoặc lát

Trong [31]

RangeIndex(start=0, stop=4, step=1)
53

Ra[31]

RangeIndex(start=0, stop=4, step=1)
54

Trong [32]

RangeIndex(start=0, stop=4, step=1)
55

Ra[32]

RangeIndex(start=0, stop=4, step=1)
56

Các đối tượng

data[1]
0 cũng có nhiều thuộc tính quen thuộc từ mảng NumPy

Trong [33]

RangeIndex(start=0, stop=4, step=1)
57

RangeIndex(start=0, stop=4, step=1)
58

Một điểm khác biệt giữa các đối tượng

data[1]
0 và mảng NumPy là các chỉ số là bất biến – nghĩa là chúng không thể được sửa đổi thông qua các phương tiện thông thường

Trong [34]

RangeIndex(start=0, stop=4, step=1)
59

RangeIndex(start=0, stop=4, step=1)
0

Tính bất biến này giúp việc chia sẻ chỉ mục giữa nhiều

RangeIndex(start=0, stop=4, step=1)
9 và mảng an toàn hơn mà không có khả năng xảy ra tác dụng phụ do vô tình sửa đổi chỉ mục

Lập chỉ mục theo thứ tự đã đặt¶

Các đối tượng Pandas được thiết kế để tạo điều kiện thuận lợi cho các hoạt động như tham gia trên các bộ dữ liệu, phụ thuộc vào nhiều khía cạnh của số học tập hợp. Đối tượng

data[1]
0 tuân theo nhiều quy ước được sử dụng bởi cấu trúc dữ liệu
data = pd.Series([0.25, 0.5, 0.75, 1.0])
data
47 tích hợp sẵn của Python, để các phép hợp nhất, giao điểm, khác biệt và các kết hợp khác có thể được tính toán theo cách quen thuộc