Điền vào DataFrame trống trong vòng lặp Python

Một câu hỏi rất phổ biến trong ngữ cảnh của gấu trúc là liệu bạn có thực sự có thể tạo một DataFrame trống và sau đó lặp lại điền nó vào bằng cách nối thêm -say- một hàng tại một thời điểm hay không. Tuy nhiên, cách tiếp cận này có xu hướng khá kém hiệu quả và nên tránh bằng mọi giá

Trong bài viết hôm nay, chúng ta sẽ thảo luận về một phương pháp thay thế sẽ mang lại cho bạn kết quả tương tự nhưng hiệu quả hơn nhiều so với việc tạo một DataFrame trống và sau đó sử dụng các vòng lặp để nối các hàng trong đó

Những gì để tránh

Tất nhiên, thực sự có thể tạo một DataFrame gấu trúc trống và sau đó nối thêm các hàng theo kiểu lặp đi lặp lại. Cách tiếp cận này đặc biệt sẽ giống như dưới đây

import numpy as np
import pandas as pd
from numpy.random import randint
# Make sure results are reproducible
np.random.seed(10)
# Instantiate an empty pandas DF
df = pd.DataFrame(columns=['colA', 'colB', 'colC'])
# Fill in the dataframe using random integers
for i in range(7):
df.loc[i] = [i] + list(randint(100, size=2))
print(df)
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11

Mặc dù cách tiếp cận ở trên sẽ thực hiện được mẹo, nhưng phải tránh cách này vì nó khá kém hiệu quả và chắc chắn có nhiều cách tiếp cận hiệu quả hơn là tạo một DataFrame trống và sau đó xây dựng nó bằng cách sử dụng các vòng lặp

Một cách tiếp cận thậm chí còn tồi tệ hơn, đó là việc sử dụng các phương thức append() hoặc concat() bên trong các vòng lặp

Điều đáng chú ý là concat() (và do đó append()) tạo một bản sao đầy đủ của dữ liệu và việc liên tục sử dụng lại chức năng này có thể tạo ra hiệu suất đáng kể. Nếu bạn cần sử dụng thao tác trên một số bộ dữ liệu, hãy sử dụng cách hiểu danh sách

— tài liệu gấu trúc

Thay vào đó, sử dụng danh sách

Thay vì nối thêm các hàng theo kiểu lặp lại bằng cách sử dụng thuộc tính loc[] hoặc phương pháp append/concat, bạn thực sự có thể nối thêm dữ liệu vào một danh sách và cuối cùng khởi tạo một Khung dữ liệu gấu trúc mới trực tiếp từ danh sách được tạo trước. Điều này thậm chí còn được đề cập trong tài liệu chính thức về gấu trúc

Lặp đi lặp lại các hàng nối vào DataFrame có thể chuyên sâu hơn về mặt tính toán so với một phép nối đơn lẻ. Một giải pháp tốt hơn là nối các hàng đó vào danh sách rồi nối tất cả danh sách với DataFrame ban đầu cùng một lúc

— tài liệu gấu trúc

import numpy as np
import pandas as pd
from numpy.random import randint
# Make sure results are reproducible
np.random.seed(10)
data = []
for i in range(7):
data.append([i] + list(randint(100, size=2))
df = pd.DataFrame(data, columns=['colA', 'colB', 'colC'])print(df)
colA colB colC
0 0 9 15
1 1 64 28
2 2 89 93
3 3 29 8
4 4 73 0
5 5 40 36
6 6 16 11

Làm việc với các danh sách (nối thêm hoặc loại bỏ các phần tử) hiệu quả hơn nhiều và bạn phải luôn thích cách tiếp cận này khi nói đến việc lặp lại các hàng nối thêm vào DataFrames của gấu trúc

Suy nghĩ cuối cùng

Trong bài viết hôm nay, chúng ta đã thảo luận về lý do tại sao điều quan trọng là tránh tạo DataFrames trống và lặp đi lặp lại việc lấp đầy chúng vì điều này sẽ ảnh hưởng đáng kể đến hiệu suất

Thay vào đó, chúng tôi đã khám phá cách xây dựng lặp đi lặp lại các cấu trúc như vậy bằng cách sử dụng danh sách và cuối cùng tạo DataFrames gấu trúc mới từ danh sách đã tạo

Trở thành thành viên và đọc mọi câu chuyện trên Medium. Phí thành viên của bạn hỗ trợ trực tiếp cho tôi và các nhà văn khác mà bạn đọc. Bạn cũng sẽ có toàn quyền truy cập vào mọi câu chuyện trên Phương tiện

bạn có thể lưu kết quả filter của mình (đúng) vào danh sách, sau đó sử dụng pd.concat để nhận df mới

thử cái này

filtered = []
for i in list_holidays:
    filter = df[df['date'].str.contains(i)]
    filtered.append(filter)

new_df = pd.concat(filtered)

print(new_df)

hoặc với một danh sách hiểu đơn giản

new_df = pd.concat([df[df['date'].str.contains(i)] for i in list_holidays])

print(new_df)

Hãy thảo luận về cách tạo một DataFrame trống và nối các hàng & cột vào nó trong Pandas n Python. Có nhiều cách để chúng ta có thể thực hiện nhiệm vụ này. Sau đây chúng tôi sẽ đề cập đến phần sau

  • Tạo một Dataframe trống trong Pandas
  • Nối hàng vào Dataframe trong Pandas
  • Nối hàng vào Dataframe trong Pandas

Tạo Dataframe trống

Python3




# import pandas library as pd

import pandas as pd

 

# create an Empty DataFrame object

df= pd.DataFrame()

 

# import pandas library as pd0____13_______1

đầu ra

Empty DataFrame
Columns: []
Index: []

Nối thêm cột vào khung dữ liệu

ví dụ 1

Tạo một DataFrame trống hoàn chỉnh mà không có bất kỳ tên cột hoặc chỉ mục nào, sau đó nối từng cột trong Pandas vào đó.  

Python3




# import pandas library as pd

import pandas as pd

 

# create an Empty DataFrame object

df= pd.DataFrame()

 

# import pandas library as pd0____13_______1

 

import4

import5import6import7= import9pandas as pd0pandas as pd1pandas as pd2pandas as pd1pandas as pd4import7

 

import5pandas as pd8import7= import9 2pandas as pd1 4pandas as pd1 6import7

 

import5# create an Empty DataFrame object0import7= import9# create an Empty DataFrame object4pandas as pd1# create an Empty DataFrame object6pandas as pd1# create an Empty DataFrame object8import7

 

df

đầu ra.  

Điền vào DataFrame trống trong vòng lặp Python

 

ví dụ 2

Phương pháp này sẽ tạo một Dataframe mới với một cột mới được thêm vào Dataframe cũ bằng cách sử dụng gán trong Pandas

Python3




df2

import pandas as pd

 

df6

df7= df9import6=1=2pandas as pd1=4pandas as pd1=6pandas as pd1=8=9

pd.DataFrame()0_______20_______1=1pd.DataFrame()3pandas as pd1pd.DataFrame()5pandas as pd1pd.DataFrame()3pandas as pd1pd.DataFrame()9=9

pd.DataFrame()0_______16_______2=1 4pandas as pd1 6pandas as pd1 4pandas as pd1 4# import pandas library as pd01

 

 

# import pandas library as pd04

df= # import pandas library as pd07

 

# import pandas library as pd09

# import pandas library as pd10= # import pandas library as pd12=___import9# import pandas library as pd15pandas as pd1# import pandas library as pd17pandas as pd1# import pandas library as pd19pandas as pd1# import pandas library as pd21# import pandas library as pd22

 

# import pandas library as pd24

# import pandas library as pd0_______13_______26

đầu ra.  

Điền vào DataFrame trống trong vòng lặp Python

 

Nối hàng vào Dataframe

ví dụ 1

Tạo một DataFrame trống chỉ với tên cột, sau đó nối từng hàng một vào nó bằng cách sử dụng.  

Python3




# import pandas library as pd

import pandas as pd

 

# import pandas library as pd31

# import pandas library as pd32

df19_______ # import pandas library as pd35_______19_______ import9import6pandas as pd1pandas as pd8pandas as pd1# create an Empty DataFrame object0# import pandas library as pd22

# import pandas library as pd0____13_______1

 

# import pandas library as pd47

df19_______ # import pandas library as pd50import6 # import pandas library as pd52pandas as pd0pandas as pd1pandas as pd8 # import pandas library as pd52 2pandas as pd1# create an Empty DataFrame object0 # import pandas library as pd52# create an Empty DataFrame object4# import pandas library as pd62

# import pandas library as pd63# import pandas library as pd64____19_______ # import pandas library as pd66# import pandas library as pd67

 

df19_______ # import pandas library as pd50import6 # import pandas library as pd52# import pandas library as pd74pandas as pd1pandas as pd8 # import pandas library as pd52# import pandas library as pd78pandas as pd1# create an Empty DataFrame object0 # import pandas library as pd52# import pandas library as pd82# import pandas library as pd62

# import pandas library as pd63# import pandas library as pd64____19_______ # import pandas library as pd66# import pandas library as pd67

 

df19_______ # import pandas library as pd50import6 # import pandas library as pd52# import pandas library as pd95pandas as pd1pandas as pd8 # import pandas library as pd52# import pandas library as pd99pandas as pd1# create an Empty DataFrame object0 # import pandas library as pd52import03# import pandas library as pd62

import05# import pandas library as pd64____19_______ # import pandas library as pd66# import pandas library as pd67

 

df

đầu ra.  

Điền vào DataFrame trống trong vòng lặp Python

 

ví dụ 2.  

Tạo một DataFrame trống với tên cột và các chỉ mục, sau đó nối từng hàng một với nó bằng phương thức loc[].  

Python3




# import pandas library as pd

import pandas as pd

 

import16

import17

df19_______ # import pandas library as pd35_______19_______ import9import6pandas as pd1pandas as pd8pandas as pd1# create an Empty DataFrame object0=9

# import pandas library as pd63import30= import9import33pandas as pd1import35pandas as pd1import37# import pandas library as pd22

 

# import pandas library as pd0_______14_______41import42import43

 

import45

import46

import47import33import7= import9pandas as pd2pandas as pd1# import pandas library as pd82pandas as pd1# create an Empty DataFrame object8import7

import47import35import7= import9pandas as pd0pandas as pd1import65pandas as pd1import67import7

import47import37import7= import9import74pandas as pd1# import pandas library as pd78pandas as pd1import65import7

Tôi có thể lặp qua DataFrame không?

Bạn có thể lặp qua khung dữ liệu gấu trúc, cho từng hàng cột .

Làm cách nào để điền giá trị null vào DataFrame của gấu trúc?

Phương thức fillna() của Pandas DataFrame . Phương thức fillna() trả về một đối tượng DataFrame mới trừ khi tham số tại chỗ được đặt thành True, trong trường hợp đó, phương thức fillna() thực hiện thay thế trong DataFrame gốc thay thế. The fillna() method replaces the NULL values with a specified value. The fillna() method returns a new DataFrame object unless the inplace parameter is set to True , in that case the fillna() method does the replacing in the original DataFrame instead.

Làm cách nào để điền các giá trị NaN vào gấu trúc?

Điều này có thể được thực hiện bằng cách sử dụng phương thức fillna() . Hoạt động cơ bản của loạt gấu trúc này. Phương thức fillna() được sử dụng để thay thế các giá trị bị thiếu (Nan hoặc NA) bằng một giá trị được chỉ định. Ban đầu, phương thức xác minh tất cả các giá trị Nan và thay thế chúng bằng giá trị thay thế được chỉ định.