【Python Pandas】DataFrameのshapeプロパティで行数・列数を取得し、条件に一致するデータを抽出する方法
はじめに
本記事では、PythonのPandasライブラリを使用して、products.csvファイルからデータを読み込み、DataFrameの行数と列数を出力した後、「product」列の値が「Car」と一致する先頭10行分のデータを抽出して表示するプログラムの作成方法を解説します。
実現したい処理
- products.csvファイルからデータを読み込む
shapeプロパティを使って行数と列数を出力する- 先頭10行の中から「product」列の値が「Car」である行を抽出して表示する
products.csvファイルを読み込んだ場合の出力結果は以下のようになります。
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
この問題に対しては、2つの異なる解決策があります。それぞれ順番に見ていきましょう。
解決策1:ilocを使った方法
手順
- products.csvファイルからデータを読み込み、変数dfに代入します。
df.shape[0]で行数、df.shape[1]で列数を取得して出力します。iloc[0:10,:]を使って、dfから先頭10行を抽出し、df1に代入します。df1.iloc[:,1]でproduct列(インデックスは1)の値を取得し、「Car」と一致する行を抽出します。
# CSVファイルの読み込み
df = pd.read_csv('products.csv')
# 先頭10行の抽出
df1 = df.iloc[0:10,:]
# product列の値が「Car」と一致する行の抽出
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'])
出力結果
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
解決策2:head()と列名指定を使った方法
手順
- products.csvファイルからデータを読み込み、変数dfに代入します。
df.shape[0]で行数、df.shape[1]で列数を取得して出力します。df.head(10)を使って先頭10行を取得し、df1に代入します。- 列名を直接指定して、「product」列の値が「Car」と一致する行を抽出します。
# CSVファイルの読み込み
df = pd.read_csv('products.csv')
# 先頭10行の抽出
df1 = df.head(10)
# product列の値が「Car」と一致する行の抽出
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'])
出力結果
Rows: 100 Columns: 8
id product engine avgmileage price height_mm width_mm productionYear
1 2 Car Diesel 21 16500 1530 1735 2020
4 5 Car Gas 18 17450 1530 1780 2018
5 6 Car Gas 19 15250 1530 1790 2019
8 9 Car Diesel 23 16925 1530 1800 2018
まとめ
今回は、Pandasのshapeプロパティを使ってDataFrameの行数・列数を取得する方法と、ilocによる位置ベースの抽出、head()と列名指定による条件抽出の2つのアプローチを紹介しました。
df.shape[0]:行数を取得df.shape[1]:列数を取得df.iloc[0:10,:]:位置指定による先頭10行の抽出df.head(10):先頭10行の取得df[df['product']=='Car']:条件に一致する行の抽出
列名がわかっている場合は、解決策2のように列名で直接指定する方が可読性が高くおすすめです。一方、列の位置を基準にアクセスしたい場合にはilocが便利です。用途に応じて使い分けるとよいでしょう。
-
【Python】Pandas DataFrameからサブセット(列の一部)を選択する方法
Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea
-
PythonでPandas DataFrameを棒グラフとして可視化する方法
データ分析において、PandasのDataFrameを視覚的に表現することは非常に重要です。この記事では、CSVファイルから読み込んだデータをmatplotlibを使って棒グラフ(バーチャート)として表示する方法を解説します。 前提条件:サンプルデータ 今回は以下のような内容のCSVファイル(SalesData.csv)を使用します。 Car Reg_Price 0 BMW 2000 1 Lexus 1500 2 Audi 1500 3 Jaguar 2000 4 Mustang