HomeChuyển FileThư viện pandas trong python

Thư viện pandas trong python

Thư viện pandas python là gì? Nó có thể giúp bạn những gì và làm sao để sử dụng thư viện pandas này trong lập trình python. Hãy cùng tôi đi tìm câu trả lời cho các thắc mắc trên trong nội dung ngày ngày hôm nay. Tôi tin rằng đây là một nội dung cực kỳ hữu ích. Nó chắc nịch sẽ mang lại cho các bạn nhiều tri thức có ích và quản lý được cách sử dụng thư viện này.

Toàn thể source code hướng dẫn của bài học bạn có thể xem và tải về tại đây.

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

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

Vì sao lại dùng thư viện pandas?

  • DataFrame mang lại sự linh hoạt và hiệu quả trong thao tác dữ liệu và lập chỉ mục;
  • Là một dụng cụ cho phép đọc/ ghi dữ liệu giữa bộ nhớ lưu trữ và nhiều định dạng file: csv, text, excel, sql database, hdf5;
  • Link dữ liệu thông minh, xử lý được trường hợp dữ liệu bị thiếu. Tự động mang dữ liệu lộn xộn về dạng có cấu trúc;
  • Đơn giản thay đổi bố cục của dữ liệu;
  • Tích hợp cơ chế trượt, lập chỉ mục, lấy ra 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 group by cho phép bạn thực hiện các toán tử trên tập dữ liệu;
  • Hiệu quả cao trong trộn và phối hợp các tập dữ liệu;
  • Lập chỉ mục theo các chiều của dữ liệu giúp thao tác giữa dữ liệu cao chiều và dữ liệu thấp chiều;
  • Tối ưu về 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,…

Để setup thư viện Pandas, bạn có thể làm theo vài cách khác nhau theo tài liệu hướng dẫn:

  1. Sử dụng pip

    1

    2

     

    pip

    install

    pandas

     

  2. Sử dụng conda

    1

    2

     

    conda

    install

    pandas

     

Lúc này tất cả chúng ta sẽ khởi đầu học cách sử dụng thư viện pandas python. Nhưng trước khi khởi đầu, hãy import thư viện pandas nhé. Tất cả chúng ta 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 nội dung này trước nhé.

1

2

3

4

5

6

7

 

# Render our plots inline

%

matplotlib

inline

 

import

pandas

as

pd

import

matplotlib

.

pyplot

as

plt

import

random

 

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

Đọc csv file vào dataframe

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

1

2

 

peoples_df

=

pd

.

read_csv

(

‘./people.csv’

)

 

Bạn có thể in ra n bản ghi trước hết của dataframe sử dụng hàm head. Trái lại của hàm head là hàm tail

1

2

 

peoples_df

.

head

(

5

)

 

Và kết quả in ra có dạng như sau:

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ư:

  • encoding: chỉ định encoding của file đọc vào. Mặc định là utf-8.
  • sep: thay đổi dấu ngăn cách giữa các cột. Mặc định là dấu phẩy (‘,’)
  • header: chỉ định file đọc vào có header(tiêu đề của các cột) hay không. Mặc định là infer.
  • index_col: chỉ định chỉ số cột nào là cột chỉ số(số thứ tự). Mặc định là None.
  • nrows: chỉ định số bản ghi sẽ đọc vào. Mặc định là None – đọc toàn thể.

1

2

3

 

peoples_df

=

pd

.

read_csv

(

‘./people.csv’

,

encoding

=

‘utf-8’

,

header

=

None

,

sep

=

‘,’

)

peoples_df

.

head

(

5

)

 

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

Độc giả 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 độc giả file csv như phía trên, peoples_df sẽ là một đối tượng có hàng, cột gọi là DataFrame. Vậy nếu bạn muốn lấy giá trị theo hàng hoặc cột rõ ràng và cụ thể nào đó thì làm như nào?

Thư viện pandas python phân phối 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 tìm tòi sự hay ho này nhé.

Xem thông tin của dataframe

Bạn có thể xem thông tin của dataframe vừa đọc vào bằng cách sử dụng hàm .info() hoặc xem kích thước của dataframe này với tính chất shape. Rõ ràng như sau:

1

2

3

4

5

6

7

 

# Xem chiều dài của df, tương tự shape[0]

print

(

‘Len:’

,

len

(

peoples_df

)

)

# Xem thông tin dataframe vừa đọc được

peoples_df

.

info

(

)

# Xem kích thước của dataframe

print

(

‘Shape:’

,

peoples_df

.

shape

)

 

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

 

Len

:

40

<

class

‘pandas.core.frame.DataFrame’

>

RangeIndex

:

40

entries

,

to

39

Data

columns

(

total

11

columns

)

:

person_ID

    

40

non

null

int64

name

        

40

non

null

object

first

        

40

non

null

object

last

        

40

non

null

object

middle

      

15

non

null

object

thư điện tử

        

40

non

null

object

phone

        

40

non

null

object

fax

          

40

non

null

object

title

        

40

non

null

object

age

          

40

non

null

int64

is_young

    

40

non

null

bool

dtypes

:

bool

(

1

)

,

int64

(

2

)

,

object

(

8

)

memory

usage

:

3.2

+

KB

Shape

:

(

40

,

11

)

 

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

Lấy 1 cột theo tên cột

Để chỉ định cột muốn lấy, bạn chỉ cần truyền vào tên cột như sau:

1

2

 

peoples_df

[

‘name’

]

 

Lấy theo nhiều cột

Thay vì truyền vào 1 string thì hãy truyền vào 1 list các tên cột. Mình thêm .head(5) để chỉ in ra 5 bản ghi trước hết cho ngắn, mặc định sẽ lấy hết.

1

2

 

peoples_df

[

[

‘name’

,

‘age’

]

]

.

head

(

5

)

 

Lấy bản ghi theo chỉ số

Để lấy một hoặc nhiều bản ghi liên tiếp trong dataframe, sử dụng cơ chế trượt theo chỉ số giống như trên list trong python. Lấy 5 bản ghi trước hết:

1

2

 

peoples_df

[

:

5

]

 

Trong trường hợp này kết quả giống như hàm head phía trên. Đều là lấy 5 bản ghi trước hết.

Bạn cũng có thể phối hợp lấy theo hàng và cột muốn:

1

2

 

peoples_df

[

[

‘name’

,

‘age’

]

]

[

:

5

]

 

Lấy các bản ghi theo điều kiện

1

2

3

 

young_pp

=

peoples_df

[

peoples_df

[

‘age’

]

<

25

]

young_pp

[

:

5

]

 

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

1

2

3

 

professor

=

peoples_df

[

peoples_df

.

title

==

‘Professor’

]

professor

.

head

(

5

)

 

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

1

2

3

 

name_compare

=

peoples_df

[

‘name’

]

.

str

.

contains

(

‘Rosella’

)

name_compare

.

head

(

5

)

 

Kết quả thu được là một dataframe có 1 cột chưa 2 giá trị True hoặc False

1

2

3

4

5

6

7

 

    

True

1

    

False

2

    

False

3

    

False

4

    

False

Name

:

name

,

dtype

:

bool

 

Lấy giá trị trả về numpy arrays

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

1

2

 

peoples_df

[

‘name’

]

.

values

 

Output bạn thu được như sau:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

array

(

[

‘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 tới numpy array, hãy đọc bài hướng dẫn về numpy của tôi tại đây nhé.

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

Thêm cột từ dữ liệu mới

Để thêm cột vào một dataframe có sẵn. Trước tiên, bạn phải có 1 list 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 list phải tương ứng với số bản ghi của dataframe bạn muốn thêm.

Ở đây, tôi sẽ sử dụng thư viện random để sinh ngẫu nhiên một list năm sinh và thêm vào dataframe như sau:

1

2

3

4

5

 

df_len

=

len

(

peoples_df

)

birthday

=

[

random

.

randrange

(

1980

,

2000

,

1

)

for

i

in

range

(

df_len

)

]

peoples_df

[

‘birthday’

]

=

birthday

peoples_df

.

tail

(

5

)

 

Thêm cột dựa vào dữ liệu đã có

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

1

2

3

 

peoples_df

[

‘is_young’

]

=

peoples_df

[

‘age’

]

<

25

peoples_df

.

head

(

5

)

 

Khởi tạo cột mới có giá trị rỗ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à toàn bộ các giá trị là None

1

2

 

peoples_df

[

‘new_column’

]

=

None

 

Thêm bản ghi trong dataframe

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

Sửa giá trị của cột

Để sửa giá trị của 1 cột, bạn làm tương tự như thêm mới cột. Nhưng khác với thêm ở chỗ là tên cột bạn truyền vào đã có trong dataframe. Còn thêm là 1 tên trường mới hoàn toàn chưa có. Ví dụ, bạn muốn thay đổi trường name, bạn chỉ cần làm như sau:

1

2

3

4

 

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 reset trường name về None

peoples_df

[

‘name’

]

=

None

 

Xóa cột trong dataframe

Bạn có thể sử dụng một trong các cách sau:

1

2

3

4

 

peoples_df

.

drop

(

‘tên cột cần xóa’

,

axis

=

1

)

# Xóa 1 cột

peoples_df

.

drop

(

[

‘cột 1’

,

‘cột 2’

]

,

axis

=

1

)

# Xóa nhiều cột

df

.

drop

(

columns

=

[

‘B’

,

‘C’

]

)

# Xóa các cột có tên là B và C

 

Xóa bản ghi theo chỉ số

1

2

 

peoples_df

.

drop

(

[

,

1

]

)

# Xóa bản ghi ở chỉ số 1 và 2

 

Hiểu dữ liệu trong dataframe

Thư viện pandas python phân phối 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à phương pháp để bạn tìm tòi và hiểu dữ liệu của mình.

Tôi đã bổ sung trường age vào file people.csv và tiến hành đọc lại.

1

2

 

peoples_df

[

‘age’

]

 

1

2

3

4

5

6

7

8

9

10

11

12

13

 

    

25

1

    

23

2

    

21

3

    

18

4

    

30

5

    

35

.

.

.

38

    

25

39

    

25

Name

:

age

,

dtype

:

int64

 

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

1

2

 

peoples_df

.

describe

(

)

 

Xem rõ ràng và cụ thể hơn trên từng cột như sau:

1

2

 

peoples_df

[

‘age’

]

.

value_counts

(

)

 

1

2

3

4

5

6

7

8

9

10

11

12

 

25

    

21

28

    

6

35

    

3

29

    

2

23

    

2

22

    

2

30

    

1

24

    

1

21

    

1

18

    

1

Name

:

age

,

dtype

:

int64

 

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

1

2

 

peoples_df

[

‘age’

]

.

value_counts

(

)

.

plot

(

kind

=

‘bar’

)

 

biểu diễn dữ liệu lên đồ thị với plot

Tạo mới dataframe

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

Tạo mới dataframe từ python dictionary

1

2

3

4

 

peoples

=

{

‘name’

:

[

‘Nguyễn Văn Hiếu’

,

‘Hiếu Nguyễn Văn’

]

,

‘age’

:

[

28

,

28

]

,

‘website’

:

[

‘https://nguyenvanhieu.vn’

,

None

]

}

df

=

pd

.

DataFrame

(

peoples

)

print

(

df

)

 

Bạn sẽ có 1 dataframe như sau:

1

2

3

4

 

              

name  

age                  

website

  

Nguy

n

V

ă

n

Hi

ế

u

  

28

  

https

:

//nguyenvanhieu.vn

1

  

Hi

ế

u

Nguy

n

V

ă

n

  

28

                      

None

 

Lưu ý: các list của từng key trong từ điển phải có cùng kích thước.

Tạo mới dataframe từ các python list

1

2

3

4

5

6

7

 

txts

=

[

‘chỗ này ăn cũng khá ngon’

,

‘ngon, nhất định sẽ quay lại’

,

‘thái độ phục vụ quá tệ’

]

labels

=

[

1

,

1

,

]

df

=

pd

.

DataFrame

(

)

df

[

‘txt’

]

=

txts

df

[

‘label’

]

=

labels

print

(

df

)

 

Bạn sẽ thu được dataframe như sau:

1

2

3

4

5

 

                          

txt  

label

    

ch

n

à

y

ă

n

c

ũ

ng

kh

á

ngon

      

1

1

  

ngon

,

nh

t

đị

nh

s

quay

l

i

      

1

2

      

th

á

i

độ

ph

c

v

qu

á

t

      

 

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

Một số thao tác khác trên dataframe

Sắp xếp dataframe

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

1

2

3

4

5

6

 

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

df

=

pd

.

DataFrame

(

{

‘name’

:

[

‘Nam’

,

‘Hiếu’

,

‘Mai’

,

‘Hoa’

]

,

‘age’

:

[

18

,

18

,

17

,

19

]

}

)

print

(

‘Before sortn’

,

df

)

df

=

df

.

sort_values

(

‘age’

,

ascending

=

True

)

print

(

‘After sortn’

,

df

)

 

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

1

2

3

4

5

6

7

8

9

10

11

12

13

 

Before

sort

    

name  

age

  

Nam

  

18

1

  

Hi

ế

u

  

18

2

  

Mai

  

17

3

  

Hoa

  

19

After

sort

    

name  

age

2

  

Mai

  

17

  

Nam

  

18

1

  

Hi

ế

u

  

18

3

  

Hoa

  

19

 

Bạn có thể sắp xếp theo nhiều cột có độ ưu tiên giảm dần, bằng cách truyền vào list tên cột. Ví dụ df.sort_values(['age', 'name'], ascending=True)

Nối 2 dataframe

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

1

2

3

4

5

6

 

# Gộp 2 dataframe

df1

=

pd

.

DataFrame

(

{

‘name’

:

[

‘Hiếu’

]

,

‘age’

:

[

18

]

,

‘gender’

:

[

‘male’

]

}

)

df2

=

pd

.

DataFrame

(

{

‘name’

:

[

‘Nam’

,

‘Mai’

,

‘Hoa’

]

,

‘age’

:

[

15

,

17

,

19

]

}

)

df

=

df1

.

append

(

df2

,

sort

=

True

)

print

(

df

)

 

Kết quả:

1

2

3

4

5

6

 

  

age

gender  

name

  

18

  

male  

Hi

ế

u

  

15

    

NaN  

Nam

1

  

17

    

NaN  

Mai

2

  

19

    

NaN  

Hoa

 

Xáo trộn các bản ghi trong dataframe

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

1

2

3

4

5

6

 

# Xáo trộn các hàng trong df – shuffle dataframe rows

df

=

pd

.

DataFrame

(

{

‘name’

:

[

‘Hiếu’

,

‘Nam’

,

‘Mai’

,

‘Hoa’

]

,

‘age’

:

[

18

,

15

,

17

,

19

]

}

)

print

(

‘Before shufflen’

,

df

)

df

=

df

.

sample

(

frac

=

1

)

.

reset_index

(

drop

=

True

)

print

(

‘After shufflen’

,

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

13

 

Before

shuffle

    

name  

age

  

Hi

ế

u

  

18

1

  

Nam

  

15

2

  

Mai

  

17

3

  

Hoa

  

19

After

shuffle

    

name  

age

  

Mai

  

17

1

  

Nam

  

15

2

  

Hi

ế

u

  

18

3

  

Hoa

  

19

 

Giải thích thêm:

  • frac: Chỉ định số bản ghi sẽ trả về ở mỗi lần random. Nếu bằng 1, tức là random ngẫu nhiên toàn bộ các bản ghi.
  • .reset_index(): Sắp xếp lại cột chỉ số của dataframe.
  • drop:với giá trị True, nó sẽ ngăn không cho hàm reset_index tạo cột mới từ cột chỉ số của dataframe ban đầu.

Lưu dataframe về file csv

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

1

2

 

df

.

to_csv

(

‘comments.csv’

)

 

Bạn có thể mở file để xem kết quả lưu:

Các tham số của hàm to_csv khá tương tự với hàm read_csv. Độc giả 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 nội dung này, tôi tin chắc bạn đã sở hữu những tri thức thiết yếu và có thể quản lý thư viện pandas trong python. Bạn cũng có thể xem một ví dụ thực tiễn sử dụng thư viện này tại nội dung code thuật toán linear regression này.

Tôi ưu bộ nhớ lưu trữ khi dùng pandas

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

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

41

 

import

numpy

as

np

# linear algebra

import

pandas

as

pd

# data processing, CSV file I/O (e.g. pd.read_csv)

 

def

reduce_mem_usage

(

df

)

:

    

“”” iterate through all the columns of a dataframe and modify the data type

        to reduce memory usage.        

    “””

    

start_mem

=

df

.

memory_usage

(

)

.

sum

(

)

/

1024

**

2

    

print

(

‘Memory usage of dataframe is {:.2f} MB’

.

format

(

start_mem

)

)

    

    

for

col

in

df

.

columns

:

        

col_type

=

df

[

col

]

.

dtype

        

        

if

col_type

!

=

object

and

col_type

.

name

!

=

‘category’

and

‘datetime’

not

in

col_type

.

name

:

            

c_min

=

df

[

col

]

.

min

(

)

            

c_max

=

df

[

col

]

.

max

(

)

            

if

str

(

col_type

)

[

:

3

]

==

‘int’

:

                

if

c_min

>

np

.

iinfo

(

np

.

int8

)

.

min

and

c_max

<

np

.

iinfo

(

np

.

int8

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

int8

)

                

elif

c_min

>

np

.

iinfo

(

np

.

int16

)

.

min

and

c_max

<

np

.

iinfo

(

np

.

int16

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

int16

)

                

elif

c_min

>

np

.

iinfo

(

np

.

int32

)

.

min

and

c_max

<

np

.

iinfo

(

np

.

int32

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

int32

)

                

elif

c_min

>

np

.

iinfo

(

np

.

int64

)

.

min

and

c_max

<

np

.

iinfo

(

np

.

int64

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

int64

)

  

            

else

:

                

if

c_min

>

np

.

finfo

(

np

.

float16

)

.

min

and

c_max

<

np

.

finfo

(

np

.

float16

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

float16

)

                

elif

c_min

>

np

.

finfo

(

np

.

float32

)

.

min

and

c_max

<

np

.

finfo

(

np

.

float32

)

.

max

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

float32

)

                

else

:

                    

df

[

col

]

=

df

[

col

]

.

astype

(

np

.

float64

)

        

elif

‘datetime’

not

in

col_type

.

name

:

            

df

[

col

]

=

df

[

col

]

.

astype

(

‘category’

)

 

    

end_mem

=

df

.

memory_usage

(

)

.

sum

(

)

/

1024

**

2

    

print

(

‘Memory usage after optimization is: {:.2f} MB’

.

format

(

end_mem

)

)

    

print

(

‘Decreased by {:.1f}%’

.

format

(

100

*

(

start_mem

end_mem

)

/

start_mem

)

)

    

    

return

df

 

Chạy thử:

1

2

3

4

5

6

 

train

=

pd

.

read_csv

(

‘../input/train.csv’

)

test

=

pd

.

read_csv

(

‘../input/test.csv’

)

sub

=

pd

.

read_csv

(

‘../input/sample_submission.csv’

)

train

=

reduce_mem_usage

(

train

)

test

=

reduce_mem_usage

(

test

)

 

Capture

Tài liệu tham khảo

Xem thêm bài viết thuộc chuyên mục: Chuyển File
XEM THÊM  Top 6 phần mềm cắt ghép nhạc đơn giản và dễ sử dụng nhất
RELATED ARTICLES

Most Popular

Recent Comments

XEM THÊM  Top 6 phần mềm cắt ghép nhạc đơn giản và dễ sử dụng nhất