Python資料分析基礎——CSV檔案——讀取多個CSV檔案
技術標籤:python資料分析資料分析python
參考文獻:《Python資料分析基礎》
前言
在大多數情況下,需要處理的檔案很多。在這種情況下,Python會給你帶來驚喜,因為它可以讓你自動化和規模化地進行資料處理,遠遠超過手工處理能夠達到的限度。
建立多個CSV檔案
為了處理多個CSV檔案,首先需要建立多個CSV檔案。在本文中只建立了三個檔案,而在實際應用中,可以拓展為任意多的檔案。
將第一個CSV檔案命名為:sales_january_2014.csv
將第二個CSV檔案命名為:sales_january_2014.csv
將第三個CSV檔案命名為:sales_march_2014.csv
最後,將上述三個CSV檔案儲存在名為sale的資料夾中。
檔案計數與檔案中的行列計數
從簡單的行列計數開始學習處理多個CSV檔案。
建立指令碼
在文字編輯器中輸入一段程式碼,然後將檔案儲存為:8_csv_reader_counts_for_multiple_files.py
#!/usr/bin/env python3
import csv
import glob
import os
import sys
input_path = sys.argv[1]
file_counter = 0
for input_file in glob.glob(os.path.join(input_path,'sales_*' )):
row_counter = 1
with open(input_file, 'r', newline='') as csv_in_file:
filereader = csv.reader(csv_in_file)
header = next(filereader)
for row in filereader:
row_counter += 1
print('{0!s}: \t{1:d} rows \t{2:d} columns'.format(os.path.basename(input_file), row_counter, len(header)))
file_counter += 1
print('Number of files: {0:d}'.format(file_counter))
指令碼程式碼思想
指令碼通過資料夾sale的檔案路徑(儲存在argv[1]中),訪問其中的三個檔案。建立控制流語句和迴圈體進行系列操作。
指令碼程式碼註釋
input_path = sys.argv[1]
這一行程式碼建立了input_path變數,並將資料夾sale的檔案路徑賦值給它。
for input_file in glob.glob(os.path.join(input_path,'sales_*')):
這一行程式碼包含了glob模組和os模組。glob模組可以定位匹配於某個特定模式的所有路徑名。os模組包含了用於解析路徑名的函式。
此行程式碼建立了for迴圈,並使用glob模組和os模組建立了一個輸入檔案的列表。首先os.path.join函式將圓括號中的兩部分連線起來,input_path是包含輸入檔案的資料夾的路徑,'sales_* '代表任何以’sale_'開頭的檔名。glob.glob函式將’sales_* ‘中的星號(*)轉換為實際的檔名。’ * '為萬用字元。
這裡簡單區分一下萬用字元和正則表示式。萬用字元由shell解析,一般由於檔名匹配。正則表示式一般用來匹配字串。
header = next(filereader)
這一行程式碼在之前處理單個CSV檔案中很常見,大部分用作提取標題行。在這裡,用來後續統計列數。
最後,小編提示一下,在這個指令碼中,巢狀結構較多,進行縮排時要細心。
執行指令碼
在命令列輸入以下命令,然後按回車鍵:
檢視結果
結語
本篇部落格介紹讀取多個CSV檔案的方法,總結了實際操作,需重點理解處理思想,掌握各個函式模組的作用及知識。