Đọc nhiều tệp trong python bằng vòng lặp for

Chúng ta có thể sử dụng vòng lặp

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
1 để đọc một tập hợp các tệp dữ liệu và thực hiện một thao tác cho từng tệp. Trong trường hợp này, chúng tôi sẽ in giá trị tối thiểu trong mỗi tệp

import pandas as pd

data_files = ['data/gapminder_gdp_africa.csv', 'data/gapminder_gdp_asia.csv']

for filename in data_files:
    data = pd.read_csv(filename, index_col='country')
    print(filename, data.min())

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64

Sử dụng để tìm các tập hợp tệp có tên khớp với một mẫu

  • Trong Unix, thuật ngữ toàn cầu có nghĩa là khớp một tập hợp các tệp với một mẫu

  • Các mẫu phổ biến nhất là

    • all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']
      
      0 có nghĩa là khớp với 0 hoặc nhiều ký tự

    • all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']
      
      1 ý nghĩa khớp chính xác với một ký tự

  • Thư viện chuẩn của Python chứa mô-đun

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    3 để cung cấp chức năng khớp mẫu

  • Mô-đun

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    3 chứa một chức năng cũng được gọi là
    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    3 để khớp với các mẫu tệp

  • E. g. ,

    all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']
    
    5 khớp với tất cả các tệp trong thư mục hiện tại có tên kết thúc bằng
    all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']
    
    6

  • Kết quả là một danh sách các chuỗi

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))

all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']

Sử dụng import glob print('all csv files in data directory:', glob.glob('data/*.csv')) 3 và import glob print('all csv files in data directory:', glob.glob('data/*.csv')) 1 để xử lý hàng loạt tệp

Bạn nên đặt tên cho các tệp của mình một cách có hệ thống. Như bạn đã biết, Python rất chính xác về những thứ như viết hoa, vì vậy nếu tên tệp của bạn không nhất quán (e. g. ,

all csv files in data directory: ['data/gapminder_gdp_americas.csv', 'data/gapminder_gdp_europe.csv', 'data/gapminder_all.csv', 'data/gapminder_gdp_oceania.csv', 'data/gapminder_gdp_africa.csv', 'data/s2.csv', 'data/s3.csv', 'data/s1.csv', 'data/gapminder_life_expectancy_years.csv', 'data/gapminder_gdp_asia.csv']
9,
for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())
0,
for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())
1), thì việc viết mã với
import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
3 hoạt động chính xác sẽ khó hơn

Đối với dữ liệu Gapminder, may mắn thay, tên tệp khá có hệ thống và nhất quán (cũng như tên của các cột bên trong mỗi tệp), vì vậy chúng tôi có thể sử dụng thông tin sau để đọc từng tệp và in GDP tối thiểu từ năm 1952

for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())

data/gapminder_gdp_americas.csv 1397.717137
data/gapminder_gdp_europe.csv 973.5331948
data/gapminder_gdp_oceania.csv 10039.59564
data/gapminder_gdp_africa.csv 298.8462121
data/gapminder_gdp_asia.csv 331.0

Nối các tệp vào một khung dữ liệu duy nhất

Thông thường, chúng tôi không chỉ muốn mở một tệp và trích xuất một chút dữ liệu (chẳng hạn như giá trị tối thiểu trong các ví dụ trên). Thay vào đó, chúng tôi có thể muốn mở một tập hợp các tệp dữ liệu có liên quan và kết hợp chúng thành một Khung dữ liệu lớn. Ví dụ, trong tâm lý học và khoa học thần kinh, hầu hết các thí nghiệm đều có nhiều người tham gia. Đối với mỗi người tham gia, khi chúng tôi chạy thử nghiệm, chúng tôi nhận được một tệp dữ liệu. Để phân tích dữ liệu giữa những người tham gia, chúng tôi muốn đọc tất cả các tệp dữ liệu của người tham gia và kết hợp chúng thành một Khung dữ liệu

gấu trúc có một vài phương pháp cho phép chúng tôi kết hợp DataFrames, bao gồm

  • for filename in glob.glob('data/gapminder_gdp*.csv'):
        data = pd.read_csv(filename)
        print(filename, data['gdpPercap_1952'].min())
    
    3

  • for filename in glob.glob('data/gapminder_gdp*.csv'):
        data = pd.read_csv(filename)
        print(filename, data['gdpPercap_1952'].min())
    
    4

Chúng tôi sẽ tập trung ở đây vào cái đầu tiên.

for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())
7 là viết tắt của “concatenate” về cơ bản có nghĩa là kết hợp các tệp bằng cách “xếp chồng” chúng. Nghĩa là, bắt đầu với một Khung dữ liệu và thêm khung dữ liệu mới vào cuối khung, tạo các hàng bổ sung. Trong những gì chúng tôi sẽ làm ở đây, chúng tôi giả sử rằng tất cả các tệp dữ liệu mà chúng tôi đang đọc đều có các cột giống nhau. Ví dụ: trong bộ dữ liệu GDP của Gapminder, mỗi tệp có một cột cho
for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())
8 cộng với một loạt các cột cho GDP trong các năm khác nhau — và các năm giống nhau nằm trong các cột của tất cả các bộ dữ liệu

Đọc dữ liệu từ nhiều người tham gia thử nghiệm

Giả sử chúng ta có dữ liệu từ một thử nghiệm trong đó chúng ta thực hiện ba người tham gia là con người (đôi khi được gọi là "người") vào những ngày khác nhau. Đối với mỗi người tham gia, chúng tôi có một tệp dữ liệu. Các cột trong tất cả các tệp đều giống nhau vì các tệp được tạo bởi một chương trình máy tính chạy thử nghiệm

Chúng tôi cung cấp cho người tham gia mã ID ẩn danh để bảo vệ quyền riêng tư của họ và cho phép quy ước đặt tên đơn giản, có hệ thống cho các tệp. dữ liệu của người tham gia đầu tiên được lưu trong một tệp có tên là

for filename in glob.glob('data/gapminder_gdp*.csv'):
    data = pd.read_csv(filename)
    print(filename, data['gdpPercap_1952'].min())
9, của người thứ hai là
data/gapminder_gdp_americas.csv 1397.717137
data/gapminder_gdp_europe.csv 973.5331948
data/gapminder_gdp_oceania.csv 10039.59564
data/gapminder_gdp_africa.csv 298.8462121
data/gapminder_gdp_asia.csv 331.0
0, v.v.

Chúng tôi có thể toàn cầu hóa thư mục dữ liệu chứa các tệp để tìm tất cả các tệp CSV có tên bắt đầu bằng

data/gapminder_gdp_americas.csv 1397.717137
data/gapminder_gdp_europe.csv 973.5331948
data/gapminder_gdp_oceania.csv 10039.59564
data/gapminder_gdp_africa.csv 298.8462121
data/gapminder_gdp_asia.csv 331.0
1 theo sau là một ký tự đơn, theo sau là
data/gapminder_gdp_americas.csv 1397.717137
data/gapminder_gdp_europe.csv 973.5331948
data/gapminder_gdp_oceania.csv 10039.59564
data/gapminder_gdp_africa.csv 298.8462121
data/gapminder_gdp_asia.csv 331.0
2. Chúng tôi sẽ lưu kết quả vào một danh sách mà chúng tôi có thể lặp lại sau này

filenames = glob.glob('data/s?.csv')

Tiếp theo, chúng tôi tạo một danh sách trống mà chúng tôi sẽ lưu trữ DataFrames từ mỗi người tham gia trong. Cuối cùng, nó sẽ trở thành một danh sách các DataFrames (hãy nhớ rằng, các danh sách có thể chứa bất kỳ loại dữ liệu Python nào khác) và khi chúng tôi đã đọc tất cả dữ liệu, chúng tôi sẽ kết hợp chúng thành một DataFrame. Đây là một thủ thuật quan trọng để sử dụng trong gấu trúc. Lý do liên quan đến cách gấu trúc kết hợp DataFrames và lưu trữ chúng trong bộ nhớ. Nói một cách đơn giản, mỗi lần chúng tôi nối các DataFrames, gấu trúc sẽ thực hiện rất nhiều kiểm tra nội bộ để đảm bảo không có lỗi. Thực hiện kiểm tra này một lần, khi kết hợp nhiều DataFrames, sẽ hiệu quả hơn nhiều (và do đó nhanh hơn) so với thực hiện nhiều lần. Tương tự như vậy, khi một DataFrame được tạo, một lượng không gian bộ nhớ thích hợp sẽ được phân bổ cho nó trên máy tính. Mỗi lần chúng tôi thêm dữ liệu bổ sung, chúng tôi phải tạo một khối bộ nhớ mới, lớn hơn. Cấp phát khối bộ nhớ mới nhiều lần tốn nhiều thời gian hơn là chỉ thực hiện một lần

df_list = []

Cuối cùng, sử dụng vòng lặp

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
1 để đọc các tệp trong. Điều này sẽ chuyển qua các mục trong danh sách
data/gapminder_gdp_americas.csv 1397.717137
data/gapminder_gdp_europe.csv 973.5331948
data/gapminder_gdp_oceania.csv 10039.59564
data/gapminder_gdp_africa.csv 298.8462121
data/gapminder_gdp_asia.csv 331.0
4;

for f in filenames:
    df_list.append(pd.read_csv(f))

Khi chúng tôi xem nội dung của danh sách, chúng tôi sẽ thấy từng tập dữ liệu, với hai cột của nó (với các tiêu đề cho biết chúng là gì) và dấu phẩy phân tách các mục trong danh sách, như một danh sách điển hình

df_list

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
0

Đọc nhiều tệp bằng cách sử dụng hiểu danh sách

Mặc dù vòng lặp

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
1 ở trên hoạt động tốt nhưng vẫn có một cách khác để thực hiện việc này, đó là sử dụng. Nhớ lại rằng việc hiểu danh sách về cơ bản chỉ là một phiên bản nhỏ gọn của vòng lặp
import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
1, nhưng chúng có một số lợi thế

  • họ giống Pythonic hơn. chúng chỉ yêu cầu một dòng mã, trong khi vòng lặp

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    1 ở trên yêu cầu hai

  • chúng hiệu quả hơn. hiểu danh sách thực sự chạy nhanh hơn. Đây có thể không phải là vấn đề trong các ví dụ nhỏ ở đây, nhưng có thể tạo ra sự khác biệt lớn khi làm việc với các tập dữ liệu thực, lớn

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
1

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
0

Kết hợp DataFrames

Tại thời điểm này, chúng tôi đã đọc từng tệp đầu vào và lưu trữ dưới dạng DataFrame, nhưng chúng tôi có danh sách ba DataFrames riêng biệt. Trong hầu hết các trường hợp, chúng tôi sẽ muốn kết hợp những thứ này theo một cách nào đó. Sau khi xây dựng danh sách các Khung dữ liệu của chúng tôi thông qua việc đọc một tập hợp các tệp, chúng tôi có thể kết hợp chúng thành một Khung dữ liệu duy nhất bằng cách sử dụng phương thức _______ của gấu trúc

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
3

người tham giaID dùng thửRT1s220. 3925264s250. 3718102s230. 3968315s260. 6592285s160. 3681423s240. 4179887s180. 3351989s3100. 704491

Đặt cột chỉ mục

Nhớ lại rằng nhãn hàng trong gấu trúc được gọi là chỉ mục. Chúng ta có thể chuyển đổi bất kỳ cột nào thành chỉ mục bằng phương thức

filenames = glob.glob('data/s?.csv')
2. Đối với dữ liệu này, một chỉ mục thích hợp là ID người tham gia, nằm trong cột
filenames = glob.glob('data/s?.csv')
3. Lưu ý rằng chúng ta cần gán kết quả của phép toán
filenames = glob.glob('data/s?.csv')
2 cho
filenames = glob.glob('data/s?.csv')
5 để thay đổi được lưu trữ

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
4

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
5


bài tập

Xác định trận đấu

Tệp nào trong số các tệp này không khớp với biểu thức

filenames = glob.glob('data/s?.csv')
6?

  1. filenames = glob.glob('data/s?.csv')
    
    7

  2. filenames = glob.glob('data/s?.csv')
    
    8

  3. filenames = glob.glob('data/s?.csv')
    
    9

Nhấn vào nút để tiết lộ câu trả lời

1 không khớp. Chuỗi

df_list = []
0 xảy ra ở cả châu Mỹ và châu Á

Tập tin toàn cầu

Điền vào chỗ trống để đoạn mã dưới đây thực hiện công việc sau

  • Tìm tất cả các tệp CSV trong thư mục dữ liệu chứa dữ liệu GDP

  • Đọc các tệp này bằng cách sử dụng vòng lặp

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    1

  • Nối các tệp dữ liệu thành một DataFrame gấu trúc duy nhất

  • In ra 10 dòng đầu tiên của DataFrame kết hợp cuối cùng

Lưu ý rằng không phải tất cả các tệp dữ liệu Gapminder đều chứa dữ liệu GDP, nhưng tên tệp sẽ cho biết tệp nào chứa dữ liệu GDP.

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
6

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
7

Nhấp vào nút để tiết lộ giải pháp

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
8

hiểu danh sách

Bây giờ hãy viết lại mã ở trên để sử dụng khả năng hiểu danh sách thay vì vòng lặp

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
1 và tổng cộng chỉ có hai dòng mã (không bao gồm các lệnh
df_list = []
3 và xem 10 dòng đầu tiên của kết quả)

Nhấp vào nút để tiết lộ giải pháp

Thực hiện trong hai dòng mã

data/gapminder_gdp_africa.csv gdpPercap_1952    298.846212
gdpPercap_1957    335.997115
gdpPercap_1962    355.203227
gdpPercap_1967    412.977514
gdpPercap_1972    464.099504
gdpPercap_1977    502.319733
gdpPercap_1982    462.211415
gdpPercap_1987    389.876185
gdpPercap_1992    410.896824
gdpPercap_1997    312.188423
gdpPercap_2002    241.165876
gdpPercap_2007    277.551859
dtype: float64
data/gapminder_gdp_asia.csv gdpPercap_1952    331.0
gdpPercap_1957    350.0
gdpPercap_1962    388.0
gdpPercap_1967    349.0
gdpPercap_1972    357.0
gdpPercap_1977    371.0
gdpPercap_1982    424.0
gdpPercap_1987    385.0
gdpPercap_1992    347.0
gdpPercap_1997    415.0
gdpPercap_2002    611.0
gdpPercap_2007    944.0
dtype: float64
9

Đối với một thách thức thậm chí còn lớn hơn, hãy xem liệu bạn có thể giảm mã xuống một dòng không

Nhấp vào nút để tiết lộ giải pháp

Thực hiện trong một dòng mã

import glob
print('all csv files in data directory:', glob.glob('data/*.csv'))
0

Tóm tắt các điểm chính

  • Sử dụng vòng lặp

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    1 để xử lý các tệp được cung cấp danh sách tên của chúng

  • Sử dụng

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    2 để tìm các tập hợp tệp có tên khớp với một mẫu

  • Khả năng hiểu danh sách có thể thay thế vòng lặp

    import glob
    print('all csv files in data directory:', glob.glob('data/*.csv'))
    
    1, dẫn đến mã hiệu quả và nhỏ gọn hơn

  • Đặt tên cho các tệp của bạn theo cách nhất quán cũng quan trọng trong khoa học dữ liệu, giống như việc viết mã để đọc chúng

  • Khi bạn muốn kết hợp nhiều tệp vào một DataFrame của gấu trúc, hãy đọc từng tệp trong danh sách DataFrames, sau đó chỉ chạy

    df_list = []
    
    7 một lần