Pandas CSV ファイル
CSV(Comma-Separated Values、カンマ区切り値。区切り文字がカンマでなくてもよいため、文字区切り値と呼ばれることもあります)。そのファイルは表データ(数値とテキスト)をプレーンテキスト形式で格納します。
CSV は汎用的で比較的単純なファイル形式であり、ユーザー、商業、科学の分野で広く使用されています。
Pandas は CSV ファイルを簡単に処理できます。一般的なメソッドは次のとおりです:
| メソッド名 | 機能説明 | 主なパラメータ |
|---|---|---|
pd.read_csv() | CSV ファイルからデータを読み取り、DataFrame として読み込む | filepath_or_buffer(パスまたはファイルオブジェクト)、sep(区切り文字)、header(ヘッダー行)、names(カスタム列名)、dtype(データ型)、index_col(インデックス列) |
DataFrame.to_csv() | DataFrame を CSV ファイルに書き込む | path_or_buffer(出力先パスまたはファイルオブジェクト)、sep(区切り文字)、index(インデックスを書き込むかどうか)、columns(列を指定)、header(列名を書き込むかどうか)、mode(書き込みモード) |
この記事ではnba.csvを例として、次のことができます。nba.csv をダウンロード 或nba.csv を開いて表示できます。
pd.read_csv() - CSV ファイルを読み取る
read_csv() は CSV ファイルからデータを読み取るための主要なメソッドであり、データを DataFrame として読み込みます。
import pandas as pd
# 读取 CSV 文件,并自定义列名和分隔符
df = pd.read_csv('data.csv', sep=';', header=0, names=['A', 'B', 'C'], dtype={'A': int, 'B': float})
print(df)
read_csv の主なパラメータ:
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
filepath_or_buffer | CSV ファイルのパスまたはファイルオブジェクト(URL、ファイルパス、ファイルオブジェクトなどをサポート) | 必須パラメータ |
sep | フィールド区切り文字を定義します。デフォルトはカンマ(,)。他の文字に変更できます。たとえばタブ(\t) | ',' |
header | 行番号を列ヘッダーとして指定します。デフォルトは 0(最初の行を表します)、または設定:Noneヘッダーなし | 0 |
names | カスタム列名。列名のリストを渡します。 | None |
index_col | 行インデックスとして使用する列の列番号または列名 | None |
usecols | 指定した列を読み取ります。列名または列インデックスを指定できます。 | None |
dtype | 列を指定したデータ型に強制的に変換します | None |
skiprows | ファイルの先頭から指定した行数をスキップするか、行番号のリストを渡します | None |
nrows | 先頭の N 行のデータを読み取ります | None |
na_values | どの値を欠損値(NaN)とみなすかを指定します | None |
skipfooter | ファイルの末尾から指定した行数をスキップします | 0 |
encoding | ファイルのエンコーディング形式(例:utf-8,latin1など) | None |
nba.csv ファイルのデータを読み取ります:
例
df = pd.read_csv('nba.csv')
print(df.to_string())
to_string()DataFrame 型のデータを返すために使用されます。この関数を使用しない場合、出力結果はデータの先頭 5 行と末尾 5 行で、中間部分は...で置き換えられます。
例
df = pd.read_csv('nba.csv')
print(df)
Name Team Number Position Age Height Weight College Salary
0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0
1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0
2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN
3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0
4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0
.. ... ... ... ... ... ... ... ... ...
453 Shelvin Mack Utah Jazz 8.0 PG 26.0 6-3 203.0 Butler 2433333.0
454 Raul Neto Utah Jazz 25.0 PG 24.0 6-1 179.0 NaN 900000.0
455 Tibor Pleiss Utah Jazz 21.0 C 26.0 7-3 256.0 NaN 2900000.0
456 Jeff Withey Utah Jazz 24.0 C 26.0 7-0 231.0 Kansas 947276.0
457 NaN NaN NaN NaN NaN NaN NaN NaN NaN
df.to_csv() - DataFrame を CSV ファイルに書き込む
to_csv() は DataFrame を CSV ファイルに書き込むメソッドで、カスタム区切り文字、列名、インデックスを含めるかどうかなどの設定をサポートしています。
import pandas as pd
# 假设 df 是一个已有的 DataFrame
df.to_csv('output.csv', index=False, header=True, columns=['A', 'B'])
to_csv の主なパラメータ:
| パラメータ | 説明 | デフォルト値 |
|---|---|---|
path_or_buffer | CSV ファイルのパスまたはファイルオブジェクト(ファイルパス、ファイルオブジェクトをサポート) | 必須パラメータ |
sep | フィールド区切り文字を定義します。デフォルトはカンマ(,)。他の文字に変更できます。たとえばタブ(\t) | ',' |
index | 行インデックスを書き込むかどうか。デフォルトはTrueで、インデックスを書き込むことを示します。 | True |
columns | 書き込む列を指定します。列名のリストを指定できます。 | None |
header | 列名を書き込むかどうか。デフォルトはTrueで、列名を書き込むことを示します。False に設定するとFalse列名を書き込まないことを示します。 | True |
mode | ファイルへの書き込みモード。デフォルトはw(書き込みモード)、次のように設定できますa(追記モード) | 'w' |
encoding | ファイルのエンコーディング形式。例:utf-8,latin1 等 | None |
line_terminator | 行終端文字を定義します。デフォルトは\n | None |
quoting | ファイル内のデータの引用符処理を設定します(0〜3、具体的な引用方法はドキュメントを参照) | None |
quotechar | 引用に使用する文字を設定します。デフォルトは二重引用符" | '"' |
date_format | 日付形式をカスタマイズします。列に日付データが含まれる場合、このパラメータで日付形式を指定できます。 | None |
doublequote | もしTrueの場合、書き込み時に引用符を含むテキストを二重引用符で囲みます。 | True |
また、次のto_csv()メソッドを使用して DataFrame を csv ファイルとして保存できます:
例
# 3 つのフィールド name, site, age
nme = ["Google", "サンプル", "Taobao", "Wiki"]
st = ["www.google.com", "www.example.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
# 辞書
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# dataframe を保存
df.to_csv('site.csv')
実行が成功すると、site.csv ファイルを開くと、表示結果は次のとおりです:

データ処理
head()
head( n )このメソッドは先頭の n 行を読み取るために使用されます。パラメータ n を指定しない場合、デフォルトで 5 行を返します。
例 - 先頭の 5 行を読み取る
df = pd.read_csv('nba.csv')
print(df.head())
出力結果は次のとおりです:
Name Team Number Position Age Height Weight College Salary
0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0
1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0
2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN
3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0
4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0
例 - 先頭の 10 行を読み取る
df = pd.read_csv('nba.csv')
print(df.head(10))
出力結果は次のとおりです:
Name Team Number Position Age Height Weight College Salary
0 Avery Bradley Boston Celtics 0.0 PG 25.0 6-2 180.0 Texas 7730337.0
1 Jae Crowder Boston Celtics 99.0 SF 25.0 6-6 235.0 Marquette 6796117.0
2 John Holland Boston Celtics 30.0 SG 27.0 6-5 205.0 Boston University NaN
3 R.J. Hunter Boston Celtics 28.0 SG 22.0 6-5 185.0 Georgia State 1148640.0
4 Jonas Jerebko Boston Celtics 8.0 PF 29.0 6-10 231.0 NaN 5000000.0
5 Amir Johnson Boston Celtics 90.0 PF 29.0 6-9 240.0 NaN 12000000.0
6 Jordan Mickey Boston Celtics 55.0 PF 21.0 6-8 235.0 LSU 1170960.0
7 Kelly Olynyk Boston Celtics 41.0 C 25.0 7-0 238.0 Gonzaga 2165160.0
8 Terry Rozier Boston Celtics 12.0 PG 22.0 6-2 190.0 Louisville 1824360.0
9 Marcus Smart Boston Celtics 36.0 PG 22.0 6-4 220.0 Oklahoma State 3431040.0
tail()
tail( n )このメソッドは末尾の n 行を読み取るために使用されます。パラメータ n を指定しない場合、デフォルトで 5 行を返します。空行の各フィールドの値は NaN を返します。NaN。
例 - 末尾の 5 行を読み取る
df = pd.read_csv('nba.csv')
print(df.tail())
出力結果は次のとおりです:
Name Team Number Position Age Height Weight College Salary 453 Shelvin Mack Utah Jazz 8.0 PG 26.0 6-3 203.0 Butler 2433333.0 454 Raul Neto Utah Jazz 25.0 PG 24.0 6-1 179.0 NaN 900000.0 455 Tibor Pleiss Utah Jazz 21.0 C 26.0 7-3 256.0 NaN 2900000.0 456 Jeff Withey Utah Jazz 24.0 C 26.0 7-0 231.0 Kansas 947276.0 457 NaN NaN NaN NaN NaN NaN NaN NaN NaN
例 - 末尾の 10 行を読み取る
df = pd.read_csv('nba.csv')
print(df.tail(10))
出力結果は次のとおりです:
Name Team Number Position Age Height Weight College Salary
448 Gordon Hayward Utah Jazz 20.0 SF 26.0 6-8 226.0 Butler 15409570.0
449 Rodney Hood Utah Jazz 5.0 SG 23.0 6-8 206.0 Duke 1348440.0
450 Joe Ingles Utah Jazz 2.0 SF 28.0 6-8 226.0 NaN 2050000.0
451 Chris Johnson Utah Jazz 23.0 SF 26.0 6-6 206.0 Dayton 981348.0
452 Trey Lyles Utah Jazz 41.0 PF 20.0 6-10 234.0 Kentucky 2239800.0
453 Shelvin Mack Utah Jazz 8.0 PG 26.0 6-3 203.0 Butler 2433333.0
454 Raul Neto Utah Jazz 25.0 PG 24.0 6-1 179.0 NaN 900000.0
455 Tibor Pleiss Utah Jazz 21.0 C 26.0 7-3 256.0 NaN 2900000.0
456 Jeff Withey Utah Jazz 24.0 C 26.0 7-0 231.0 Kansas 947276.0
457 NaN NaN NaN NaN NaN NaN NaN NaN NaN
info()
info() メソッドはテーブルの基本情報を返します:
例
df = pd.read_csv('nba.csv')
print(df.info())
出力結果は次のとおりです:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 458 entries, 0 to 457 # 行数,458 行,第一行编号为 0 Data columns (total 9 columns): # 列数,9列 # Column Non-Null Count Dtype # 各列的数据类型 --- ------ -------------- ----- 0 Name 457 non-null object 1 Team 457 non-null object 2 Number 457 non-null float64 3 Position 457 non-null object 4 Age 457 non-null float64 5 Height 457 non-null object 6 Weight 457 non-null float64 7 College 373 non-null object # non-null,意思为非空的数据 8 Salary 446 non-null float64 dtypes: float64(4), object(5) # 类型
non-null は非 null データです。上記の情報から、合計 458 行あり、College フィールドの欠損値が最も多いことがわかります。
その他の拡張