【Python Pandas】CSVファイルを読み込み、先頭10行から「product」列が「Car」に一致する行を抽出する方法
この記事では、「products.csv」ファイルを読み込んだうえで、全体の行数・列数を確認し、先頭10行の中から「product」列の値が「Car」に一致するレコードだけを抽出して出力する方法を解説します。
前提となるデータ
今回使用する「products.csv」は、全100行・8列のデータセットです。先頭10行には「product」列が「Car」になっているレコードが複数含まれており、期待される出力は以下のようになります。
Rows: 100 Columns: 8 id product engine avgmileage price height_mm width_mm productionYear 1 Car Diesel 21 16500 1530 1735 2020 4 Car Gas 18 17450 1530 1780 2018 5 Car Gas 19 15250 1530 1790 2019 8 Car Diesel 23 16925 1530 1800 2018
この問題に対しては、主に2つの解決策があります。それぞれ順番に見ていきましょう。
解決策1:ilocによる位置指定で抽出する
pandasでCSVファイルを読み込み、DataFrame(df)に代入します。
df.shape[0]で行数、df.shape[1]で列数を出力します。
iloc[0:10,:]を使って先頭10行のみを抽出し、df1に代入します。
product列(列インデックスは1)の値が「Car」に一致する行を条件式でフィルタリングし、結果を出力します。
df = pd.read_csv('products.csv')
df1 = df.iloc[0:10,:]
df1[df1.iloc[:,1]=='Car']
コード例
実際のコードを見て、動作を確認してみましょう。
import pandas as pd
df = pd.read_csv('products.csv')
print("Rows:", df.shape[0], "Columns:", df.shape[1])
df1 = df.iloc[0:10, :]
print(df1[df1.iloc[:,1] == 'Car'])
解決策2:head()メソッドと列名指定で抽出する
同じくCSVファイルを読み込み、dfに代入します。
df.shapeで行数・列数を出力します。
head(10)メソッドで先頭10行を取得し、df1に代入します。
列名「product」を直接指定した条件式で、「Car」に一致する行を抽出します。
df1 = df.head(10)
df1[df1['product']=='Car']
コード例
こちらも実装例を見て理解を深めましょう。
import pandas as pd
df = pd.read_csv('products.csv')
print("Rows:", df.shape[0], "Columns:", df.shape[1])
df1 = df.head(10)
print(df1[df1['product'] == 'Car'])
出力結果
どちらの方法でも、以下のように先頭10行の中から「product」列が「Car」に一致する行のみが出力されます。
Rows: 100 Columns: 8 id product engine avgmileage price height_mm width_mm productionYear 1 Car Diesel 21 16500 1530 1735 2020 4 Car Gas 18 17450 1530 1780 2018 5 Car Gas 19 15250 1530 1790 2019 8 Car Diesel 23 16925 1530 1800 2018
2つの方法の使い分けのポイント
解決策1のilocは「位置(インデックス番号)」を基準に行や列を指定するため、列名が事前に分からない場合や、プログラム的に列位置で処理したい場合に便利です。一方、解決策2のhead()+列名指定は、コードの意図が読み取りやすく可読性が高いのが特徴です。列名が明確に分かっている場合は、解決策2のような列名での指定をおすすめします。
-
JavaでCSVファイルを読み込む方法|BufferedReaderによる基本的なデータ読み取り手順
CSVとは「Comma Separated Values(カンマ区切り値)」の略で、テキスト形式のデータファイルの一種です。CSVファイルでは、1行ごとに複数の項目がカンマ(,)で区切られて記録されており、拡張子は「.csv」として保存されます。表形式のデータを扱う際に広く利用されている、シンプルで汎用性の高いフォーマットです。 JavaでCSVファイルを読み込む仕組み JavaでCSVファイルを読み込むには、BufferedReaderクラスのreadLine()メソッドを使用するのが基本的な方法です。このメソッドを使うと、ファイルの内容を1行ずつ順番に読み取ることができます。 読み取った各
-
Python・PandasでヘッダーなしのCSVファイルを読み込む方法
CSVファイルをヘッダー(列名)なしで読み込むには、pandasのread_csv()メソッドでheaderパラメータに「None」を指定します。 ここでは、Microsoft Excelで開いた以下のようなCSVファイル(SalesData.csv)を例に解説します。1行目には「Car」「Reg_Price」「Units」というヘッダーが含まれています。 必要なライブラリのインポート まず、pandasライブラリをインポートします。 import pandas as pd 通常どおりCSVファイルを読み込む headerパラメータを指定せずにCSVファイルを読み込むと、先頭行が自動的にヘッダ