Python Pandas入門:DataFrameから複数の行を抽出する方法をわかりやすく解説
PandasのDataFrameから複数の行を選択・抽出するには、スライス演算子「:」を使う方法が便利です。この記事では、基本的な行の選択方法から、locやilocを使った応用的な抽出方法まで、サンプルコードと実行結果とともに詳しく解説します。
1. Pandasのインポート
まず、必要なPandasライブラリを別名(エイリアス)付きでインポートします。慣例として「pd」という別名を使うのが一般的です。
import pandas as pd
2. DataFrameの作成
次に、サンプル用のDataFrameを作成します。ここでは4行2列のデータを用意し、行ラベルに「w」「x」「y」「z」、列名に「a」「b」を指定しています。
dataFrame = pd.DataFrame(
[[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b']
)
3. スライス演算子で複数の行を選択する
複数の行を選択するには、「:」演算子を使って範囲を指定します。以下の例では、0番目から2番目の手前まで(つまり先頭の2行)を抽出しています。
dataFrame[0:2]
なお、スライスは終了位置を含まない点に注意してください。[0:2]の場合、0番目と1番目の行が取得されます。
サンプルコード全体
以下に、ラベル指定(loc)、整数位置指定(iloc)、そして複数行の選択を組み合わせた完全なコードを示します。
import pandas as pd
# DataFrameを作成
dataFrame = pd.DataFrame(
[[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b']
)
# DataFrameを表示
print("DataFrame...\n", dataFrame)
# loc:行ラベルを指定して行を選択
print("\nラベルを指定して行を選択...")
print(dataFrame.loc['z'])
# iloc:整数位置を指定して行を選択
print("\n整数位置を指定して行を選択...")
print(dataFrame.iloc[1])
# 複数の行を選択
print("\n複数の行を選択...")
print(dataFrame[0:2])
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
a b
w 10 15
x 20 25
y 30 35
z 40 45
ラベルを指定して行を選択...
a 40
b 45
Name: z, dtype: int64
整数位置を指定して行を選択...
a 20
b 25
Name: x, dtype: int64
複数の行を選択...
a b
w 10 15
x 20 25
各行の選択方法のまとめ
- loc:行ラベル(index名)を指定して行を取得します。単一のラベルでも、リストやスライスでも指定可能です。
- iloc:行番号(0から始まる整数位置)を指定して行を取得します。
- スライス演算子「:」:
dataFrame[開始:終了]の形式で範囲を指定し、複数の行を一度に抽出できます。終了位置は含まれません。
これらの方法を使い分けることで、DataFrameから目的の行を柔軟かつ効率的に取り出すことができます。データ分析の前処理などで頻繁に使うテクニックなので、ぜひマスターしておきましょう。
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存
-
Python Pandas:read_csvのskipinitialspaceでCSV読み込み時の先頭スペースをスキップする方法
PandasでCSVの先頭スペースをスキップするには?PandasでDataFrameを読み込む際、データの先頭にある余分な空白(初期スペース)を取り除きたい場合は、read_csv()メソッドのskipinitialspaceパラメータを使用します。このパラメータをTrueに設定すると、区切り文字(カンマなど)の直後にある空白が自動的にスキップされます。CSVファイルの中には、カンマの後に不要なスペースが混ざっているケースが少なくありません。そのまま読み込むと、列名や値の先頭に空白が残り、条件検索やグループ化の際にデータが正しく一致しない原因となります。skipinitialspace=Tr