Trích xuất một cột từ csv python

Chúng tôi sẽ tiếp tục tập này từ nơi chúng tôi đã dừng lại trong tập trước. Nếu bạn đã khởi động lại Jupyter hoặc bạn muốn sử dụng sổ ghi chép mới, hãy đảm bảo rằng bạn đã nhập pandas và đã đọc SN7577. tập dữ liệu 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ừ Dataframe gấu trúc

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

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 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 cho 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)
9. Ngoài ra, chúng tôi cũng có thể cung cấp danh sách 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

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
0, làm thế nào bây giờ chúng ta có thể tham chiếu đến 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)

0        1
1        3
2       10
3        9
...

Nếu chúng tôi quan tâm đến nhiều cột, phương pháp 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 có giá trị là

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
1 nhưng 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')
2

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

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

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 sắp xếp theo thứ tự 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? . k. một lỗi đánh máy)

Dung dịch

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

Lọc theo hàng

Bạn có thể lọc Khung dữ liệu theo hàng bằng cách chỉ định một phạm vi ở dạng

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
3.
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
4 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')
5 là hàng ngoài hàng cuối cùng được yêu cầu

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

Tập thể dục

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

Dung dịch

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

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

(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
6. 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')
7 hoặc
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
8 để trả về 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')
9 luôn được yêu cầu. Bạn có thể sử dụng chính
(1286, 6)
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
Index(['Q1', 'Q2', 'Q3', 'sex', 'age', 'agegroups'], dtype='object')
9 để trả về tất cả các hàng

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

Có nhiều khả năng bạn sẽ muốn chọn các hàng từ Khung dữ liệu dựa trên một số tiêu chí, chẳng hạn như “tất cả các hàng có giá trị cho Q2 là -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

Các tiêu chí có thể phức tạp hơn và không giới hạn ở các giá trị của một 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

Ta có thể kết hợp chọn hàng với 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)
2

Việc 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 hàng liền kề

Tuy nhiên, có một cách khác để chọn hàng bằng cách sử dụ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 pháp

# Both of these statements are the same
print(df_SN7577['Q1'])
# and
print(df_SN7577.Q1)
1 cho kết quả giống như ví dụ trước của chúng tôi

Tuy nhiên, bây giờ chúng ta có thể chỉ định một giá trị duy nhất và quan trọng hơn là chúng ta có thể sử dụng hàm

# Both of these statements are the same
print(df_SN7577['Q1'])
# and
print(df_SN7577.Q1)
2 để chỉ ra các bản ghi mà chúng ta 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 Khung dữ liệu

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

Bạn cũng có thể chỉ định phạm vi cột bằng cách sử dụng lại phương pháp

# Both of these statements are the same
print(df_SN7577['Q1'])
# and
print(df_SN7577.Q1)
1 bằng cách sử dụng 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)
4 cho phép bạn sử dụng 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)
6

Lấy mẫu

Pandas có phương thức

# Both of these statements are the same
print(df_SN7577['Q1'])
# and
print(df_SN7577.Q1)
5 cho phép bạn trích xuất một mẫu bản ghi từ 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)
7

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)
    
    9

  • Chúng ta có thể dễ dàng xâu chuỗi các điều kiện boolean khi lọc các hàng của khung dữ liệu gấu trúc

  • Các phương thức

    # Both of these statements are the same
    print(df_SN7577['Q1'])
    # and
    print(df_SN7577.Q1)
    
    4 và
    # Both of these statements are the same
    print(df_SN7577['Q1'])
    # and
    print(df_SN7577.Q1)
    
    1 cho phép chúng tôi nhận các hàng có nhãn cụ thể và tại các vị trí số nguyên cụ thể tương ứng