Khung dữ liệu trong python

Thư viện pandas python là gì? . Hãy cùng tôi đi tìm câu trả lời cho các câu hỏi trên trong bài viết hôm nay. Tôi tin rằng đây là một bài viết cực kỳ hữu ích. Nó chắc chắn sẽ trả lại cho bạn nhiều kiến ​​thức bổ sung và làm chủ theo cách sử dụng thư viện này

Toàn bộ source code direction của bài học các bạn có thể xem và tải về tại đây

NỘI DUNG BÀI VIẾT

Thư viện pandas python là gì?

Thư viện pandas trong python là thư viện mã nguồn mở, hỗ trợ đắc lực trong thao tác dữ liệu. Đây cũng là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ của ngôn ngữ lập trình python. Thư viện này được sử dụng rộng rãi trong nghiên cứu nghiên cứu phát triển các ứng dụng về khoa học dữ liệu. Thư viện này sử dụng cấu trúc dữ liệu riêng là Dataframe. Pandas cung cấp rất nhiều chức năng xử lý và xử lý trên cấu trúc dữ liệu này. Chính sự linh hoạt và hiệu quả đã khiến pandas được sử dụng rộng rãi

In sao lại sử dụng pandas thư viện?

  • DataFrame trả lại sự hoạt động và hiệu quả trong thao tác dữ liệu và thiết lập chỉ mục;
  • Là một công cụ cho phép đọc/ghi dữ liệu giữa bộ nhớ và nhiều định dạng tệp. cơ sở dữ liệu csv, văn bản, excel, sql, hdf5;
  • Liên kết dữ liệu thông minh, xử lý trường hợp dữ liệu bị thiếu. Tự động đưa dữ liệu lộn ngược về dạng có cấu trúc;
  • Dễ dàng thay đổi cấu trúc dữ liệu cục bộ;
  • Tích hợp cơ chế trượt, lập chỉ mục, lấy tệp con từ tệp dữ liệu lớn
  • Có thể thêm, xóa các cột dữ liệu;
  • Tập hợp hoặc thay đổi dữ liệu với nhóm bằng cách cho phép bạn thực hiện các thuật toán trên tập dữ liệu;
  • Hiệu quả cao trong quá trình hợp nhất và kết hợp các tập dữ liệu;
  • Lập chỉ mục theo chiều dữ liệu giúp thao tác giữa dữ liệu chiều cao và chiều dữ liệu thấp;
  • Tối ưu hóa hiệu năng;
  • Pandas được sử dụng rộng rãi trong cả học thuật và thương mại. Bao gồm thống kê, thương mại, phân tích, quảng cáo,…

Để cài đặt thư viện Pandas, bạn có thể làm theo một số cách khác nhau theo hướng dẫn tài liệu

  1. Sử dụng pip

    1

    pip cài đặt gấu trúc

  2. Use conda

    1

    conda cài đặt gấu trúc

Bây giờ chúng ta sẽ bắt đầu học cách sử dụng thư viện pandas python. Nhưng trước khi bắt đầu, hãy nhập thư viện pandas nhé. Chúng ta sẽ sử dụng cả thư viện matplotlib nữa

Nếu bạn chưa biết về thư viện matplotlib, hãy đọc trước nhé

1

2

3

4

5

6

# Kết xuất các ô của chúng tôi trong dòng

%matplotlib inline

 

nhập gấu trúc as pd

nhập matplotlib. pyplot as plt

nhập ngẫu nhiên

Đọc tệp csv sử dụng thư viện pandas

Đọc tệp csv vào khung dữ liệu

Bạn có thể dễ dàng đọc vào một tập tin. csv bằng cách sử dụng hàm read_csv và được trả về 1 khung dữ liệu. Mặc định, hàm này sẽ phân biệt các trường của tệp csv theo dấu phẩy. Cách đọc hết các đơn giản như sau

1

peoples_df = pd. read_csv('. /mọi người. csv')

Bạn có thể ra bản ghi đầu tiên của khung dữ liệu bằng cách sử dụng hàm head. Ngược lại của hàm head là hàm tail

1

Peoples_df. đầu(5)

And results in the format as after

Khung dữ liệu trong python
Khung dữ liệu trong python
read file csv using pandas library

Tuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm read_csv như

  • mã hóa. chỉ định mã hóa của tập tin đọc vào. Default is utf-8
  • tháng chín. thay đổi dấu ngăn cách giữa các cột. Default is comcom (‘,’)
  • tiêu đề. read only file to have header(title of the column) or not. Default is infer
  • chỉ mục_col. only number column are only column(numerical number). Default is None
  • cau mày. only the write number will read to. Mặc định là Không có – đọc toàn bộ

1

2

peoples_df = pd. read_csv('. /mọi người. csv', mã hóa='utf-8', header=None, sep=',')

Peoples_df. đầu(5)

Khi tôi chỉ định không có tiêu đề, dòng tiêu đề của chúng tôi đã biến thành 1 bản ghi dữ liệu

Khung dữ liệu trong python
Khung dữ liệu trong python

Bạn đọc có thể xem mô tả đầy đủ từng tham số của hàm read_csv của thư viện pandas python tại đây

Thao tác với dataframe trong pandas

Khi bạn đọc tệp csv ở phía trên, peoples_df sẽ là một đối tượng có hàng, cột được gọi là DataFrame. Vì vậy, nếu bạn muốn lấy giá trị theo hàng hoặc cột cụ thể nào đó thì làm như thế nào?

Thư viện pandas python cung cấp rất nhiều hàm hữu ích cho phép bạn thao tác với đối tượng dữ liệu dataframe này. Hãy cùng tôi đi khám phá sự thật hay ho này nhé

See information of dataframe

Bạn có thể xem thông tin của khung dữ liệu vừa đọc bằng cách sử dụng hàm .info() hoặc xem kích thước của khung dữ liệu này với thuộc tính shape. Các cụ thể như sau

1

2

3

4

5

6

# Xem chiều dài của df, hình dạng tương đương[0]

in('Len. ', len(peoples_df))

# Viewed dataframe dataframe vừa đọc được

Peoples_df. thông tin()

# View size of dataframe

in('Hình dạng. ', peoples_df. hình dạng)

Và đây là những gì chúng ta sẽ thấy

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Len. 40

<lớp 'gấu trúc. cốt lõi. khung. DataFrame'>

Chỉ số phạm vi. 40 bài viết, 0 đến 39

Dữ liệu cột (tổng 11 columns):

người_ ID     40 non-null int64

tên         40 không-null object

đầu tiên        40 không-null object

lần cuối         40 không-null object

trung bình       15 không-null object

email        40 không-null object

điện thoại        40 không-null object

fax          40 không-null object

tiêu đề        40 không-null object

tuổi          40 không-null int64

_ trẻ      40 non-null bool

dtypes. bool(1), int64(2), object(8)

bộ nhớ việc sử dụng. 3. 2+ KB

Hình dạng. (40, 11)

Truy xuất dữ liệu trên dataframe

Get 1 column by name column

To only column you want to get, you only to transfer to the column name as after

1

peoples_df['name']

Khung dữ liệu trong python
Khung dữ liệu trong python
get 1 column of dataframe used pandas python

Get by many column

Thay vì truyền vào 1 chuỗi thì hãy truyền vào 1 danh sách các cột tên. Mình thêm .head(5) để chỉ ra 5 bản ghi đầu tiên cho rút ngắn, mặc định sẽ lấy hết

1

peoples_df[['name', 'age']].đầu(5)

Khung dữ liệu trong python
Khung dữ liệu trong python
get many column in dataframe

Get the write table by number

Để lấy hoặc nhiều bản ghi liên tiếp trong khung dữ liệu, sử dụng cơ chế trượt theo số giống như trên danh sách trong python. Nhận 5 bản ghi đầu tiên

1

Peoples_df[0. 5]

Trong trường hợp này, kết quả giống như hàm head on. Mũi tên là khoảng 5 bản ghi đầu tiên

Khung dữ liệu trong python
Khung dữ liệu trong python

Bạn cũng có thể kết hợp lấy theo hàng và cột mong muốn

1

peoples_df[['name', 'age']][:5]

Khung dữ liệu trong python
Khung dữ liệu trong python

Nhận các bản ghi theo điều kiện

1

2

young_pp = Peoples_df[Peoples_df['age'] < 25]

young_pp[. 5]

Khung dữ liệu trong python
Khung dữ liệu trong python
get the dataframe ghi theo điều kiện

Một ví dụ khác. Lấy tất cả các bản ghi chứa thông tin của người có chức danh là giáo sư

1

2

giáo sư = Peoples_df[Peoples_df.chức danh == 'Giáo sư']

giáo sư. đầu(5)

Khung dữ liệu trong python
Khung dữ liệu trong python

Hoặc 1 ví dụ so sánh chuỗi như sau

1

2

name_compare = peoples_df['name'].str. chứa('Rosella')

tên_so sánh. đầu(5)

Kết quả thu được là một khung dữ liệu có 1 cột chưa 2 giá trị Đúng hoặc Sai

1

2

3

4

5

6

0     Đúng

1    Sai

2    Sai

3    Sai

4    Sai

Tên. tên, dtype. bool

Get the return value for numpy arrays

Để lấy giá trị của một cột trả về dưới dạng mảng numpy trong thư viện pandas python, bạn chỉ cần thêm head0 vào sau, ví dụ

1

peoples_df['name']. giá trị

Output you get as after

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

mảng(['Burks, Rosella ', 'Avila, Damien ', 'Olsen, Robin ',

       'Moises, Edgar Estes', 'Brian, Heath Pruitt',

       'Claude, Elvin Haney', 'Mosley, Edmund ', 'Derek, Antoine Mccoy',

       'Hawkins, Callie ', 'Pate, Andrea ', 'Austin, Liz ',

       'Kendrick, Reba Alford', 'Sims, Angelina ', 'Mullins, Kimberly ',

       'Chuck, Lloyd Haney', 'Payne, Ladonna ',

       'Baxter, Johnathan Browning', 'Weiss, Gilbert ',

       'Deirdre, Florence Barrera', 'Fernando, Toby Calderon',

       'Garrison, Patrica ', 'Effie, Leila Vinson', 'Buckley, Rose ',

       'Stanton, Kathie ', 'Banks, Shannon ', 'Barnes, Cleo ',

       'Brady, Nellie ', 'Katheryn, Ruben Holt', 'Michael, Dianne ',

       'Grant, Adam ', 'Head, Kurtis ', 'Berger, Jami ',

       'Earline, Jaime Fitzgerald', 'Evelyn, Summer Frost',

       'Quentin, Sam Hyde', 'Dunlap, Ann ', 'Shields, Rich Pena',

       'Page, Winnie ', 'Sparks, Ezra ', 'Kaufman, Elba '], dtype=object)

Nếu bạn quan tâm đến mảng numpy, hãy đọc bài viết hướng dẫn về numpy của tôi

Thêm, sửa, xóa trong dataframe

Add column from new data

To add column to a dataframe available. Trước tiên, bạn cần có 1 head1 dữ liệu tương ứng với cột mà bạn muốn thêm. Tức là chiều dài của danh sách phải tương ứng với số bản ghi của khung dữ liệu mà bạn muốn thêm

Ở đây, tôi sẽ sử dụng thư viện ngẫu nhiên để sinh ngẫu nhiên một danh sách năm sinh và thêm vào khung dữ liệu như sau

1

2

3

4

df_len = len(peoples_df)

sinh nhật = [ngẫu nhiên. sắp xếp(1980, 2000, 1) for i in range(df_len)]

Peoples_df['sinh nhật'] = birthday

Peoples_df. đuôi(5)

Khung dữ liệu trong python
Khung dữ liệu trong python
thêm cột vào khung dữ liệu pandas python

Add column based on the data has been

Giả sử ở đây mình muốn thêm cột head2 có giá trị True nếu tuổi < 25 và False trong trường hợp còn lại

1

2

Peoples_df['is_young'] = peoples_df['age'] &lt; 25

Peoples_df. đầu(5)

Khung dữ liệu trong python
Khung dữ liệu trong python
thêm cột vào pandas khung dữ liệu

Khởi tạo cột mới có giá trị trống

Sử dụng cú pháp đơn giản như dưới đây, bạn sẽ có một trường mới và tất cả các giá trị là Không có

1

Peoples_df['new_column'] = None

Thêm bản ghi trong khung dữ liệu

Về vấn đề bổ sung bản ghi, chúng tôi thường ít khi sử dụng nên tôi sẽ không trình bày. Bạn đọc quan tâm có thể đọc thêm tại tài liệu này

Edit the value of the column

Để sửa giá trị của 1 cột, bạn làm tương tự như thêm cột mới. Nhưng khác với vị trí được thêm vào là tên cột bạn truyền vào đã có trong khung dữ liệu. Còn nữa là 1 tên trường mới hoàn toàn chưa có. Không hạn chế, bạn muốn thay đổi tên trường, bạn chỉ cần làm như sau

1

2

3

peoples_df['name'] = xxx #list các tên mới có chiều dài bằng chiều dài của dataframe

// Hoặc đặt lại tên trường về Không có

peoples_df['name'] = None

Delete the column in dataframe

You can't use a in the way after

1

2

3

Peoples_df. drop('tên cột cần xóa', axis=1) # Xóa 1 cột

Peoples_df. thả(['cột 1', 'cột 2'], axis=1) # Xóa nhiều cột

df. thả(cột=['B', 'C']) # Xóa các cột có tên là B và C

Delete the write by number

con trăn

1

Peoples_df. thả([0, 1]) # Xóa bản ghi ở chỉ số 1 và 2

Hiểu dữ liệu trong dataframe

Thư viện pandas python cung cấp cho bạn một số hàm giúp bạn hiểu về cấu trúc, phân bố của dữ liệu. Dưới đây là cách để bạn khám phá và hiểu dữ liệu của mình

Tôi đã bổ sung trường head3 vào tệp người. csv and readback process

1

peoples_df['tuổi']

1

2

3

4

5

6

7

8

9

10

11

12

0     25

1     23

2     21

3     18

4     30

5     35

.

.

.

38    25

39    25

Tên. tuổi, dạng. int64

Sử dụng hàm head4 cho bạn các bảng thống kê cơ bản về dữ liệu

1

Peoples_df. mô tả()

Khung dữ liệu trong python
Khung dữ liệu trong python
xem data data trong dataframe

Xem cụ thể hơn trên từng cột như sau

1

peoples_df['tuổi']. value_counts()

1

2

3

4

5

6

7

8

9

10

11

25    21

28     6

35     3

29     2

23     2

22     2

30     1

24     1

21     1

18     1

Tên. tuổi, dạng. int64

Bạn cũng có thể vẽ đồ thị để xem phân bố giá trị của một trường trong khung dữ liệu như sau

1

peoples_df['tuổi']. value_counts(). cốt truyện(tử tế=')

Khung dữ liệu trong python
Khung dữ liệu trong python

Tạo khung dữ liệu mới

Có một vài cách để tạo ra dataframe trong thư viện pandas python. Bạn có thể sử dụng cách mà bạn cho là dễ sử dụng, đôi khi cũng phải tùy chọn vào trường hợp mà nên chọn cách nào từng lần nữa

Tạo khung dữ liệu mới từ từ điển python

con trăn

1

2

3

người = {'tên'. ['Nguyễn Văn Hiếu', 'Hiếu Nguyễn Văn'], 'age': [28, 28] . , 'website': ['https. //nguyenvanhieu. vn', Không]}

df = pd. Khung dữ liệu(người)

in(df)

You will have 1 dataframe as after

1

2

3

              tên  tuổi                   trang web

0  Nguyn Văn Hiếu   28  https://nguyenvanhieu. vn

1  Chào ế u Nguyn Văn   28                      None

Lưu ý. list of each key in dictionary must have the same size

Tạo khung dữ liệu mới từ danh sách python

1

2

3

4

5

6

txts = ['chỗ này ăn cũng khá ngon', 'ngon, nhất định sẽ quay lại', 'thái độ phục vụ quá tệ']

nhãn = [1, 1, 0]

df = pd. Khung dữ liệu()

df['txt'] = txts

df['nhãn'] = labels

in(df)

You will get dataframe as after

1

2

3

4

                            txt  nhãn

0     ch này ăn cũng khá ngon      1

1  ngon, nht định s quay li      1

2       th á i độ phc v quá t      0

Lưu ý. danh sách này phải có cùng kích thước

Một số thao tác khác trên khung dữ liệu

Sắp xếp khung dữ liệu

Với thư viện pandas python, bạn có thể sắp xếp dataframe tăng dần, hoặc giảm dần theo 1 hoặc nhiều cột chỉ định

1

2

3

4

5

# Sắp xếp df tăng dần theo cột nào đó

df = pd. Khung dữ liệu({'name': ['Nam', 'Hiếu', 'Mai', 'Hoa'], 'age': [18,18,17,19]})

in('Trước khi sắp xếp\n', df)

df = df. sort_values('tuổi', ascending=True)

in('Sau khi sắp xếp\n', df)

Kết quả in ra được như sau

1

2

3

4

5

6

7

8

9

10

11

12

Trước sắp xếp

   tên  tuổi

0   Nam   18

1  Chào ế u   18

2   Mai   17

3   Hòa   19

Sau sắp xếp

   tên  tuổi

2   Mai   17

0   Nam   18

1  Chào ế u   18

3   Hòa   19

Bạn có thể sắp xếp theo nhiều cột có mức độ ưu tiên giảm dần, bằng cách truyền vào danh sách cột tên. Ví dụ head5

Kết nối 2 khung dữ liệu

Bạn có thể kết nối 2 dataframe thành 1 dataframe mới bằng cách sử dụng hàm head6 của thư viện pandas

1

2

3

4

5

# Gộp 2 dataframe

df1 = pd. Khung dữ liệu({'name': ['Hiếu'], 'age': [18], ' . : ['nam']})

df2 = pd. Khung dữ liệu({'name': ['Nam', 'Mai', 'Hoa'], 'age': [15,17,19]})

df = df1. chắp thêm(df2, sắp xếp=True)

in(df)

Kết quả

1

2

3

4

5

   tuổi giới tính  tên

0   18   nam  Hiếu

0   15    NaN   Nam

1   17    NaN   Mai

2   19    NaN   Hoa

Xoá các bản ghi trong khung dữ liệu

Trong xử lý dữ liệu, bạn chắc chắn sẽ cần đến công việc trộn dữ liệu. Rất có thể, pandas thư viện có thể giúp chúng tôi làm việc đó

1

2

3

4

5

# Xáo trộn các hàng trong df - xáo trộn các hàng trong khung dữ liệu

df = pd. Khung dữ liệu({'name': ['Hiếu', 'Nam', 'Mai', 'Hoa'], 'age': [18,15,17,19]})

in('Trước khi xáo trộn\n', df)

df = df. mẫu(frac=1 . ).reset_index(drop=True)

in('Sau khi xáo trộn\n', df)

Kết quả(Có thể khác nhau nhé – xáo trộn mà)

1

2

3

4

5

6

7

8

9

10

11

12

Trước xáo bài

   tên  tuổi

0  Chào ế u   18

1   Nam   15

2   Mai   17

3   Hòa   19

Sau xáo bài

   tên  tuổi

0   Mai   17

1   Nam   15

2  Chào ế u   18

3   Hòa   19

Giải thích thêm

  • frac. Chỉ định số bản ghi sẽ được trả về mỗi lần ngẫu nhiên. If by 1, tức là ngẫu nhiên ngẫu nhiên tất cả các bản ghi
  • reset_index(). Sắp xếp lại các cột chỉ số của khung dữ liệu
  • làm rơi. with value Đúng, nó sẽ không ngăn hàm head7 tạo cột mới từ cột số duy nhất của khung dữ liệu ban đầu

Save dataframe về file csv

Thư viện pandas python cho phép bạn lưu lại khung dữ liệu chỉ với một dòng mã. Quá đơn giản phải không?

1

df. to_csv('nhận xét. csv')

You can open file to view results save

Khung dữ liệu trong python
Khung dữ liệu trong python
lưu khung dữ liệu vào tệp csv

Tham số của hàm head8 tương đối giống với hàm read_csv. Bạn đọc có thể xem thêm thông tin đầy đủ của hàm này tại đây

Tới đây mình xin kết thúc bài hướng dẫn về thư viện pandas python. Qua bài viết này, tôi tin chắc rằng bạn đã có những kiến ​​thức cần thiết và có thể làm chủ thư viện pandas trong python. Bạn cũng có thể xem ví dụ thực tế sử dụng thư viện này tại bài viết code thuật toán hồi quy tuyến tính này

Tôi ưu tiên bộ nhớ khi sử dụng pandas

Mục này mình đọc từ bài viết của Anh Lê Huỳnh Đức trên Diễn đàn machinelearningcoban, xin được trích dẫn lại

con trăn

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

nhập numpy as np # đại số tuyến tính

nhập gấu trúc as pd # xử lý dữ liệu, CSV . g. pd. read_csv)

 

def reduce_mem_usage(df):

    """ lặp qua tất cả các cột của khung dữ liệu và sửa đổi loại dữ liệu

để giảm sử dụng bộ nhớ.         

"""

    start_mem = df. sử dụng bộ nhớ(). tổng() / 1024**2

    in('Mức sử dụng bộ nhớ của khung dữ liệu là {. 2f} MB'. định dạng(start_mem))

    

    cho col trong df.cột.

        col_type = df[col].dtype

        

        if col_type . = đối tượng col_type. tên . = 'danh mục' 'ngày giờ' không in col_type.tên.

            c_min = df[col].phút()

            c_max = df[col].tối đa()

            if str(col_type)[:3] == 'int':

                        if c_min > np.iinfo(np. int8). phút c_max < np . .iinfo(np. int8). tối đa.

                    df[col] = df[col].astype(np. int8)

                        elif c_min > np.iinfo(np. int16). phút c_max < np . .iinfo(np. int16). tối đa.

                    df[col] = df[col].astype(np. int16)

                        elif c_min > np.iinfo(np. int32). phút c_max < np . .iinfo(np. int32). tối đa.

                    df[col] = df[col].astype(np. int32)

                        elif c_min > np.iinfo(np. int64). phút c_max < np . .iinfo(np. int64). tối đa.

                    df[col] = df[col].astype(np. int64)  

            else.

                        if c_min > np.finfo(np. float16). phút c_max < np . .finfo(np. float16). tối đa.

                    df[col] = df[col].astype(np. float16)

                        elif c_min > np.finfo(np. float32). phút c_max < np . .finfo(np. float32). tối đa.

                    df[col] = df[col].astype(np. float32)

                khác.

                    df[col] = df[col].astype(np. float64)

        elif 'datetime' not in col_type.tên.

            df[col] = df[col].astype('category')

 

    end_mem = df. sử dụng bộ nhớ(). tổng() / 1024**2

    in('Mức sử dụng bộ nhớ sau khi tối ưu hóa là. {. 2f} MB'. định dạng(end_mem))

    in('Đã giảm bởi {. 1f}%'. định dạng(100 * (start_mem - end_mem) / start_mem))

    

    return df

Run try

1

2

3

4

5

đào tạo = pd. read_csv('. /đầu vào/đào tạo. csv')

kiểm tra = pd. read_csv('. /đầu vào/kiểm tra. csv')

sub = pd. read_csv('. /input/sample_submission. csv')

đào tạo = reduce_mem_usage(đào tạo)

kiểm tra = reduce_mem_usage(kiểm tra)

Khung dữ liệu trong python
Khung dữ liệu trong python

Tài liệu tham khảo

  1. Sách dạy nấu ăn gấu trúc – https. //github. com/jvns/pandas-cookbook
  2. Tài liệu chính thức – https. //gấu trúc. pydata. tổ chức/chỉ mục. html

  • THẺ
  • key learning pandas

Facebook

Twitter

Pinterest

WhatsApp

Nguyễn Văn Hiếu

Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến ​​thức mà tôi tích lũy được