Hướng dẫn how do i extract rows and columns from a csv file in python? - làm cách nào để trích xuất các hàng và cột từ tệp csv trong python?

Tổng quan

Giảng dạy: 15 phút Bài tập: 15 phút 15 min
Exercises: 15 min

Câu hỏi

  • Làm thế nào tôi có thể trích xuất các hàng và cột cụ thể từ DataFrame?

  • Làm cách nào để thêm hoặc xóa các cột khỏi DataFrame?

  • Làm thế nào tôi có thể tìm và thay đổi các giá trị bị thiếu trong một khung dữ liệu?

Mục tiêu

  • Xác định lập chỉ mục vì nó liên quan đến cấu trúc dữ liệu

  • Chọn các cột cụ thể từ khung dữ liệu

  • Chọn các hàng cụ thể từ khung dữ liệu dựa trên các biểu thức có điều kiện

  • Sử dụng các chỉ mục để truy cập các hàng và cột

  • Sao chép khung dữ liệu

  • Thêm cột vào khung dữ liệu

  • Phân tích bộ dữ liệu có giá trị thiếu/null

Chúng tôi sẽ tiếp tục tập phim này từ nơi chúng tôi rời khỏi tập cuối. Nếu bạn đã khởi động lại Jupyter hoặc bạn muốn sử dụng một cuốn sổ mới, hãy chắc chắn rằng bạn nhập gấu trúc và đã đọc bộ dữ liệu SN7577.TAB vào DataFrame.

import pandas as pd
df_SN7577 = pd.read_csv("SN7577.tab", sep='\t')

Chọn các hàng và cột từ một khung dữ liệu gấu trúc

Nếu chúng ta biết những cột nào chúng ta muốn trước khi chúng ta đọc dữ liệu từ tệp, chúng ta có thể nói

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
6 chỉ nhập các cột đó bằng cách chỉ định các cột theo số chỉ mục của chúng (bắt đầu từ 0) dưới dạng danh sách vào tham số
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
7. Ngoài ra, chúng tôi cũng có thể cung cấp một danh sách các tên cột.

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')

Bây giờ chúng ta hãy giả sử rằng chúng ta đọc trong tệp hoàn chỉnh hiện có trong DataFrame

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
8, làm thế nào bây giờ chúng ta có thể tham khảo các cột cụ thể?

Có hai cách thực hiện việc này bằng cách sử dụng tên cột (hoặc nhãn):

# Both of these statements are the same
print(df_SN7577['Q1'])
# and
print(df_SN7577.Q1)

Nếu chúng ta quan tâm đến nhiều cột, phương thức thứ 2 ở trên không thể được sử dụng. Tuy nhiên, trong lần đầu tiên, mặc dù chúng tôi đã sử dụng một chuỗi với giá trị

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
9, chúng tôi cũng có thể đã cung cấp một danh sách các chuỗi. Hãy nhớ rằng các danh sách được đính kèm trong
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
0.

print(df_SN7577[['Q1', 'Q2', 'Q3']])

Q1  Q2  Q3
0      1  -1   1
1      3  -1   1
2     10   3   2
3      9  -1  10
...

Tập thể dục

Điều gì xảy ra nếu bạn:

  1. Liệt kê các cột bạn muốn theo thứ tự từ cách chúng xuất hiện trong tệp?
  2. Đặt cùng một tên cột trong hai lần?
  3. Đặt tên cột không tồn tại? (a.k.a lỗi đánh máy)

Dung dịch

print(df_SN7577[['Q3', 'Q2']])
print(df_SN7577[['Q3', 'Q2', 'Q3']])
print(df_SN7577[['Q33', 'Q2']])

Lọc theo hàng

Bạn có thể lọc DataFrame bằng các hàng bằng cách chỉ định một phạm vi dưới dạng

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
1.
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
2 là hàng đầu tiên và
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
3 là một hàng ngoài hàng cuối cùng được yêu cầu.

# select row with index of 1, 2 and 3 (rows 2, 3 and 4 in the Dataframe)
df_SN7577_some_rows = df_SN7577[1:4]
df_SN7577_some_rows

Tập thể dục

Điều gì xảy ra nếu bạn:

Dung dịch

Lọc theo hàng

Bạn có thể lọc DataFrame bằng các hàng bằng cách chỉ định một phạm vi dưới dạng (1286, 6) Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') 1. (1286, 6) Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') 2 là hàng đầu tiên và (1286, 6) Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object') 3 là một hàng ngoài hàng cuối cùng được yêu cầu.

Điều gì xảy ra nếu chúng ta yêu cầu một hàng thay vì phạm vi?

df_SN7577_some_rows = df_SN7577[(df_SN7577.Q2 == -1)]
df_SN7577_some_rows

Bạn gặp lỗi nếu bạn chỉ chỉ định

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
4. Bạn cần sử dụng
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
5 hoặc
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
6 để trả lại hàng đầu tiên.
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
7 luôn được yêu cầu. Bạn có thể sử dụng
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
7 một mình để trả lại tất cả các hàng.

df_SN7577_some_rows = df_SN7577[ (df_SN7577.Q2 == -1) & (df_SN7577.numage > 60)]
df_SN7577_some_rows

Sử dụng các tiêu chí để lọc hàng

Nhiều khả năng bạn sẽ muốn chọn các hàng từ DataFrame dựa trên một số tiêu chí, chẳng hạn như tất cả các hàng trong đó giá trị cho Q2 là -1.

Các tiêu chí có thể phức tạp hơn và không giới hạn trong một giá trị của một cột:

Chúng ta có thể kết hợp lựa chọn hàng với lựa chọn cột:

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
1

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
0

Chọn các hàng trên chỉ mục hàng được sử dụng hạn chế trừ khi bạn cần chọn một phạm vi tiếp giáp của hàng.

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
2

Tuy nhiên, có một cách khác để chọn hàng bằng chỉ mục hàng:

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
3

Sử dụng phương thức

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
9 cho kết quả tương tự như ví dụ trước của chúng tôi.

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
4

Tuy nhiên, bây giờ chúng tôi có thể chỉ định một giá trị duy nhất và quan trọng hơn là chúng tôi có thể sử dụng hàm # Both of these statements are the same print(df_SN7577['Q1']) # and print(df_SN7577.Q1) 0 để chỉ ra các bản ghi mà chúng tôi muốn. Điều này có thể hữu ích để thực hiện các lựa chọn giả ngẫu nhiên của các hàng từ khắp DataFrame.

Bạn cũng có thể chỉ định các phạm vi cột bằng phương thức

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
9 một lần nữa bằng cách sử dụng các số chỉ mục cột:

df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
print(df_SN7577_some_cols.shape)
print(df_SN7577_some_cols.columns)
df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
print(df_SN7577_some_cols.columns)
5

Ngoài ra còn có một phương thức # Both of these statements are the same print(df_SN7577['Q1']) # and print(df_SN7577.Q1) 2 cho phép bạn sử dụng tên cột.

  • Lấy mẫu

  • Pandas có phương pháp

    # Both of these statements are the same
    print(df_SN7577['Q1'])
    # and
    print(df_SN7577.Q1)
    
    3 cho phép bạn trích xuất một mẫu hồ sơ từ DataFrame.

  • Những điểm chính

  • Nhập các cột cụ thể khi đọc trong một .csv với tham số

    df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= [0,1,2,173,174,175])
    print(df_SN7577_some_cols.shape)
    print(df_SN7577_some_cols.columns)
    df_SN7577_some_cols = pd.read_csv("SN7577.tab", sep='\t', usecols= ['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'])
    print(df_SN7577_some_cols.columns)
    
    7