Python中CSV讀取和轉換

banq發表於2024-05-23

在本教程中,我們研究 Python 中CSV的讀取和轉換,尤其是Pandas 庫強大的資料處理功能。

pandas read_csv
這個函式是最常用的 pandas 函式之一,特別是用於資料預處理。對於將 CSV 檔案中的資料匯入到 Python 環境中以進行進一步分析等任務來說,它的價值無可估量。此函式能夠從本地計算機和直接從 URL 讀取 CSV 檔案。此外,使用 pandas 讀取 csv 檔案附帶了大量選項來自定義資料載入過程以滿足您的特定需求。

使用 Pandas Concat 時應注意的事項
使用 pandas read_csv 函式(pd.read_csv)將 CSV 檔案讀入 DataFrame 時,有幾個重要事項需要注意:

  • 分隔符和編碼:使用 pandas read_csv 時,請始終指定適當的定界符和編碼引數。預設分隔符是逗號,但 CSV 檔案也可以使用製表符或分號等其他分隔符。此外,確保編碼與檔案的編碼相匹配,以便正確讀取特殊字元。
  • 處理缺失資料:注意如何在 CSV 檔案中表示缺失資料。預設情況下,pandas read_csv 會將空字串、NA 和 NULL 值視為缺失資料。您可以使用 na_values 和 keep_default_na 等引數自定義缺失值的處理方式。
  • 解析日期和時間:在處理 CSV 檔案中的日期和時間資料時,請在 pandas read_csv 中指定 parse_dates 引數,以確保正確解析日期和時間列。這樣,您就可以在 DataFrame 中以日期時間物件的形式處理資料。

配置您的開發環境
要遵循本指南,您需要在系統上安裝 Pandas 庫。
Pandas 可以透過 pip 安裝:python pip install pandas

專案結構:

tree . --dirsfirst
.
├── data
│   ├── large_video_game_sales.csv
│   ├── movie_ratings.csv
│   ├── odd_delimiter_sales.csv
│   └── video_game_sales.csv
└── pandas_read_csv_examples.py

2 directories, 5 files

使用 pandas read_csv 的簡單示例
本例演示如何使用 pandas.read_csv 載入一個簡單的資料集。我們將使用一個包含電影評分的 CSV 檔案。目的是將這些資料載入到 pandas DataFrame 中,並列印資料的基本資訊。

# 首先,讓我們匯入 pandas 軟體包。
import pandas as pd

現在,讓我們載入一個名為 <font>"movie_ratings.csv "的 CSV 檔案。這是一個來自您最喜愛的影評網站的電影評分資料集。
# 資料集包括
"標題""年份""評級 ""評論者 "列。

# 將 CSV 檔案載入到 DataFrame 中。
movie_ratings = pd.read_csv('.data/movie_ratings.csv')

# 讓我們來看看電影分級的前幾行,確保一切看起來都很好。
print(movie_ratings.head())<font></font>

# 我們資料集的基本資訊如何?讓我們檢查一下資料型別以及是否存在缺失值。
print(movie_ratings.info())

  • 首先,我們使用 pd 別名匯入 pandas 軟體包。該軟體包提供資料結構和資料分析工具。
  • 第 8 行將名為 "movie_ratings.csv "的 CSV 檔案載入到名為 "movie_ratings "的 DataFrame 中。該檔案可能包含電影評分資料,列如 "標題"、"年份"、"評分 "和 "評論者"。
  • print(movie_ratings.head()) 函式用於顯示 "movie_ratings" DataFrame 的前幾行。這樣可以快速檢視資料。
  • print(movie_ratings.info()) 函式用於顯示 "movie_ratings "資料幀的基本資訊。這包括列的資料型別和是否存在缺失值。這有助於瞭解資料集的結構和完整性。

執行這段程式碼後,您將看到類似下面的輸出結果:

      Title      Year      Rating       Reviewer<font></font>
0     The Shawshank Redemption  1994     9.3       John Doe<font></font>
1     The Godfather  1972     9.2     Jane Smith<font></font>
2     The Dark Knight  2008     9.0  Emily Johnson<font></font>
3     Pulp Fiction  1994     8.9     Mike Brown<font></font>
4     The Lord of the Rings: The Return of the King  2003     8.9    Sarah Davis<font></font>
<font></font>
RangeIndex: 5 entries, 0 to 4<font></font>
Data columns (total 4 columns):<font></font>
 #   Column    Non-Null Count  Dtype  <font></font>
---  ------    --------------  -----  <font></font>
 0   Title     5 non-null      object<font></font>
 1   Year      5 non-null      int64  <font></font>
 2   Rating    5 non-null      float64<font></font>
 3   Reviewer  5 non-null      object<font></font>
dtypes: float64(1), int64(1), object(2)<font></font>
memory usage: 292.0+ bytes<font></font>
None

該輸出顯示了 pandas read_csv 如何處理 csv 檔案的匯入,以及如何顯示 csv 資料的相關資訊。現在,讓我們來學習一些更高階的功能。

Dask
Dask 是 Python 中一個強大的平行計算庫,可以有效地處理大型資料集,使其成為 Pandas 可能遇到記憶體問題的情況的絕佳替代方案。

為什麼 Dask 是處理大型資料集的更好方法

  • 可擴充套件性:Dask 可以擴充套件到機器叢集並處理比可用記憶體大得多的資料集的計算,而 pandas 受到機器 RAM 大小的限制。
  • 惰性計算:Dask 操作是惰性的,這意味著它們構建任務圖並僅在您顯式計算結果時才執行它。這使得 Dask 能夠更有效地最佳化運營並管理資源。
  • 平行計算:Dask 可以自動將資料和計算劃分到多個核心或不同的機器上,從而顯著提高速度,尤其是對於大規模資料。

這使得 Dask 成為一個很好的替代品 ,在處理非常大的資料集或在分散式計算環境中時,並行處理可以顯著加快資料操作速度。

Python 中的字串轉 CSV
字串由一系列字元組成,而 CSV 是一個逗號分隔的值,如何將字串轉換為 CSV Python?

使用 csv 模組將 Python 字串轉換為 CSV
Python 有一個名為csv的模組,允許您處理 csv 資料,實際上,該模組有一個名為writerow()的函式,它將資料寫入 csv 檔案,但在這裡我們將看到如何將字串寫入 CSV 檔案。

import csv

data_string = <font>"""Name, Age, Occupation
Roy, 28, Data Scientist
Vincent, 34, Web Developer
Willie, 25, Graphic Designer
"""

# 將字串分行
data_rows = data_string.strip().split('\n')

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    for row in data_rows:
        使用 writerow() 方法在逗號處分割每一行並寫入 CSV
        writer.writerow(row.split(', '))


第一個字串被定義到一個名為 data_string 的變數中。然後,呼叫 strip() 方法刪除字串中不需要的字元;之後,使用 split('\n') 將字串分成幾行。

然後,使用 open('output.csv', 'w', newline=") 作為 file: 的程式碼,在寫模式 "w "下開啟一個檔案。

如果 output.csv 檔案不存在,則建立一個新檔案,並將檔案物件作為 "檔案 "返回。然後,使用 csv 模組中的 writer() 方法,使用 csv.writer(file) 將檔案物件傳遞給 writer() 方法,該方法返回 writer 物件。

然後針對 data_rows 中的 row 使用這行程式碼:從 data_rows 中提取每一行,然後使用 row.split(", ") 根據逗號分割每一行。最後使用 writerow() 方法將每一行寫入 output.csv 檔案。

使用 write() 方法將字串寫入 CSV
可以格式化 csv 檔案的字串,然後使用檔案的 write() 方法將字串寫入 CSV 檔案。

# defined string into my_str variable
my_str = 'Bobby;456;983'

以writting 模式開啟 my_file.csv 檔案。
with open('file.csv', 'w') as out:

    根據分隔符';' 
    nbsp; 將字串拆分成子串列表,並使用','.join()方法用逗號(',')將它們連線起來。
    lines = [','.join(line) for line in my_str.split(';')]

    使用換行符('\n')作為      分隔符,連線行列表中的元素,建立新字串 my_str
    my_str = '\n'.join(lines)
    # writing the content of my_str to the 'file.csv' file using the write() method
    out.write(my_str)

將在計算機上獲得file.csv檔案。開啟該檔案時,您將看到每個字串字元都由逗號分隔。

相關文章