<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「query」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/query/feed" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Sun, 11 Jan 2026 08:43:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「query」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【pandas】DataFrameのデータ選択方法 ~loc, iloc, at, iat 等~</title>
		<link>https://tech.nkhn37.net/pandas-dataframe-data-selection/</link>
					<comments>https://tech.nkhn37.net/pandas-dataframe-data-selection/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Wed, 16 Feb 2022 20:00:00 +0000</pubDate>
				<category><![CDATA[pandas]]></category>
		<category><![CDATA[at]]></category>
		<category><![CDATA[groupby]]></category>
		<category><![CDATA[iat]]></category>
		<category><![CDATA[iloc]]></category>
		<category><![CDATA[loc]]></category>
		<category><![CDATA[pivot_table]]></category>
		<category><![CDATA[query]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=2770</guid>

					<description><![CDATA[pandasのDataFrameのデータ選択方法について解説します。 DataFrameのデータ選択方法 pandasを利用する際にとても重要になってくるのがDataFrameの扱いです。本記事ではDataFrameから [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>pandasの<span class="marker"><strong>DataFrameのデータ選択方法</strong></span>について解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="dataframeのデータ選択方法">DataFrameのデータ選択方法</h2>



<p>pandasを利用する際にとても重要になってくるのがDataFrameの扱いです。本記事ではDataFrameから必要なデータを選択する方法の基本について説明します。</p>



<p>DataFrameのデータ選択方法として是非覚えておいて欲しいのは後述する<span class="marker"><strong><code>loc</code></strong></span>, <span class="marker"><strong><code>iloc</code></strong></span>, <span class="marker"><strong><code>at</code></strong></span>, <span class="marker"><strong><code>iat</code></strong></span>といったデータ選択方法です。しかし、それらメソッドを使用しないデータアクセス方法も色々とあります。</p>



<p>本記事では、まずはDataFrameとしてのデータ選択方法を概観します。その後に<code>loc</code>, <code>iloc</code>, <code>at</code>, <code>iat</code>といった重要なメソッドを使ったDataFrameのデータ選択方法を紹介していきます。<code>loc</code>, <code>iloc</code>, <code>at</code>, <code>iat</code>の使い方を確認したい場合は、その他の方法は読み飛ばしていただいても構いません。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="列名を指定して特定の列を取得する方法">列名を指定して特定の列を取得する方法</h3>



<h4 class="wp-block-heading jinr-heading d--bold" id="基本的な使用方法">基本的な使用方法</h4>



<p>DataFrameで、列名を指定して特定の列を取得する場合には以下のように使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# 列名を指定して特定の列情報を取得する（辞書のようにアクセス）
print(df["attr1"], "\n")
# 列名を変数のようにして読み込むことも可能
print(df.attr1)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

A    10
B    20
C    30
D    40
E    50
Name: attr1, dtype: int64 

A    10
B    20
C    30
D    40
E    50
Name: attr1, dtype: int64</pre>



<p>使い方は、Python辞書のキーを指定してアクセスする方法と同様で<code>df['列名']</code>とすることで特定列を取得できます。また、列名を変数名のように「<code>df.列名</code>」としてアクセスすることも可能です。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="注意事項-列名とメソッド名の重複に注意">注意事項：列名とメソッド名が同じ場合に注意</h4>



<p>列名を変数名のように「<code>df.列名</code>」としてアクセスする場合には注意事項があります。<span class="marker"><strong>DataFrameのメソッド名と同じ列名を使ってしまうと取得できるデータは想定のものになりません。</strong></span>メソッド名と列名が同じになっているような列がないか注意しましょう。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "pop": attr2})
print(df, "\n")

# メソッド名と重なる場合、辞書形式の取得と属性名での取得は一致しない
print(f"df.pop: \n{df.pop}\n")
print(f"df['pop']: \n{df['pop']}\n")
print(df.pop is df["pop"])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  pop
A     10   60
B     20   70
C     30   80
D     40   90
E     50  100 

df.pop: 
&lt;bound method DataFrame.pop of    attr1  pop
A     10   60
B     20   70
C     30   80
D     40   90
E     50  100>

df['pop']: 
A     60
B     70
C     80
D     90
E    100
Name: pop, dtype: int64

False</pre>



<p>上記例では、データが「<code>pop</code>」という列を持っています。しかし、DataFrameのメソッドに<code>pop</code>メソッドがあるため、<code>df.pop</code>として取得できるものは<code>df['pop']</code>として取得できるものとは異なります。<code>is</code>を使って確認を取っていますが<code>False</code>で一致しません。</p>



<p>このように、DataFrameのメソッドと列名が同じ場合だと想定外の結果となることもあるので注意して使用するようにしてください。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="特定の列情報を任意の順序に並べたデータを取得する方法">特定の列情報を任意順序に並べたデータを取得する方法</h3>



<p>DataFrameの列の順序を任意に並べ替えたい場合には、以下のように列名を並べて取得します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# 特定の列名を指定し、任意順序で並べ替えてデータを取得する（同じ列の複製も可能）
print(df[["attr2", "attr1", "attr1", "attr2"]])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

   attr2  attr1  attr1  attr2
A     60     10     10     60
B     70     20     20     70
C     80     30     30     80
D     90     40     40     90
E    100     50     50    100</pre>



<p>上記例では、列の順序を表すようなリストを<code>[]</code>の中に渡すことで、指定した列順序で並び替えています。また、<code>attr1</code>, <code>attr2</code>を複数回指定していますが、列が複製されていることが分かるかと思います。このように、同一の列名を複数回リストに指定すれば、列データを複製するようなことが可能になります。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="既存の列を用いて計算した結果の列を作成する方法">既存の列を用いて計算した結果列を作成する方法</h3>



<p>DataFrameの既存の列を用いて計算した結果で新しい列を作成したくなる場合がよくあります。以下例のように、既存の列を用いて計算したうえで新しく結果列を作ることができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# 既存の列から計算して新しい列を作成する
df["sum"] = df["attr1"] + df["attr2"]
print(df)</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

   attr1  attr2  sum
A     10     60   70
B     20     70   90
C     30     80  110
D     40     90  130
E     50    100  150</pre>



<p><code>df['sum']</code>は元々のデータには存在していないですが、上記例のように足し算の計算式を指定することで新しい<code>'sum'</code>という列を作成することができます。上記例は、足し算「<code>+</code>」ですが、その他の演算や関数等を使って新しい列を作ることももちろん可能です。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="スライスで特定のキーを持つ行を選択する方法-1">スライスで特定のキーを持つ行を選択する方法</h3>



<p>DataFrameの特定のキーを持つ行を選択する場合にはスライスが使用できます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# ===== スライスで特定のキーを持つ行を選択する
# 明示的なインデックスを使用する場合
print(df["B":"D"], "\n")
# 暗黙的なインデックスを使用する場合
print(df[1:3])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

   attr1  attr2
B     20     70
C     30     80
D     40     90 

   attr1  attr2
B     20     70
C     30     80</pre>



<p><code>[]</code>の中にキーとなるインデックスをスライスで指定すると該当する行を選択できます。pandasのDataFrameやSeriesでは、インデックスには明示的なインデックスと暗黙的なインデックスがあります。</p>



<p>明示的なインデックスは「<code>index=</code>」で指定しているインデックスです。一方、暗黙的なインデックスは表面上は見えていませんが<code>0～</code>の数値で振られているインデックスです。例えば上記の例でいえば、明示的なインデックス「<code>'A'</code>」に相当する暗黙的なインデックスは「<code>0</code>」となります。</p>



<p>注意が必要なのは、明示的なインデックスのスライスでは終わりを含みますが、暗黙的なインデックスのスライスでは終わりを含まないことです。上記例でいうと、<code>['B':'D']</code>という指定であれば<code>'D'</code>に該当する行を含みますが、<code>[1:3]</code>とすると<code>3</code>に該当する行は含まれません。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="マスキングで特定の条件に一致する行を選択する方法">特定条件に一致する行を選択する方法</h3>



<h4 class="wp-block-heading jinr-heading d--bold">マスキングによるデータ選択</h4>



<p>DataFrameの中から特定条件に一致する行を選択するには、以下の例のようにマスキングすることができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# 特定の条件に一致する行を選択する
print(df[(df["attr1"] > 10) &amp; (df["attr2"] &lt; 100)])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

   attr1  attr2
B     20     70
C     30     80
D     40     90</pre>



<p>上記例では「<code>attr1</code>列の値が<code>10</code>より大きい」かつ「<code>attr2</code>列の値が<code>100</code>より小さい」に該当する行が選択されます。<code>df['attr1'] &gt; 10</code>といった部分は該当する行が<code>True</code>となるような<code>bool</code>型になります。<code>df['attr2'] &lt; 100</code>についても同様の考え方です。</p>



<p>選択対象とする行が<code>True</code>となる<code>bool</code>値をDataFrameの<code>[]</code>内に指定することで該当する行だけマスキングすることができます。</p>



<h4 class="wp-block-heading jinr-heading d--bold">queryを用いた条件指定によるデータ選択</h4>



<p>特定条件に一致する行を選択する方法として、<span class="marker"><strong><code>query</code></strong></span>メソッドを使用した方法もあります。<code>query</code>は、以下の例のように使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2})
print(df, "\n")

# queryを用いて条件に一致する行を選択する
# ※ 内部的に文字列評価を行うためパフォーマンスに影響ある場合があることに注意
print(df.query("attr1 > 10 and attr2 &lt; 100"), "\n")

# 変数を使ったクエリの記載も可能
threshold1 = 20
threshold2 = 90
print(df.query("attr1 >= @threshold1 and attr2 &lt; @threshold2"))</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2
A     10     60
B     20     70
C     30     80
D     40     90
E     50    100 

   attr1  attr2
B     20     70
C     30     80
D     40     90 

   attr1  attr2
B     20     70
C     30     80</pre>



<p><code>query</code>を使用する場合には、上記例のようにデータを取得するための条件となるクエリ文字列で指定します。また、<code>threshold1</code>や<code>threshold2</code>のようにプログラム中で作成した変数をクエリに含めたい場合には、<code>@</code>を文字列内で使用することで該当箇所に埋め込んでデータ選択をすることも可能です。</p>



<p><code>query</code>は、条件式を文字列で直接記載するので複雑な条件を直感的に読みやすいというメリットがあります。ただし、<code>query</code>では内部的に文字列を評価して処理を実行するため、巨大なデータフレームを扱う場合などではパフォーマンス上で影響があるかもしれないので注意が必要です。</p>



<p>また、すべての状況で<code>query</code>が使用できるとは限りませんので実行したいクエリを実行できるかはよく確認してもらえればと思います。</p>



<h3 class="wp-block-heading jinr-heading d--bold" id="任意の行-列の値を選択する方法-loc-iloc-at-iat">任意の行、列の値を選択する方法 ~loc, iloc, at, iat~</h3>



<p>DataFrameで任意の行や列の値を選択する方法は、<span class="marker"><strong><code>loc</code></strong></span>, <span class="marker"><strong><code>iloc</code></strong></span>, <span class="marker"><strong><code>at</code></strong></span>, <span class="marker"><strong><code>iat</code></strong></span>を使用することができます。これらのメソッドの使い方は是非覚えてください。</p>



<p>pandasのDataFrameやSeriesでは、インデックスには明示的なインデックスと暗黙的なインデックスがあります。明示的なインデックスは「<code>index=</code>」等で指定しているインデックスで、一方の暗黙的なインデックスは表面上は見えていませんが<code>0～</code>の数値で振られているインデックスです。</p>



<p>以降で説明する<code>loc</code>, <code>iloc</code>, <code>at</code>, <code>iat</code>に関して<span class="marker"><strong>「<code>i</code>」がついているものは暗黙的なインデックス</strong></span>を対象に、<span class="marker"><strong>「<code>i</code>」がついていないものは明示的なインデックス</strong></span>を対象にしてデータ選択するメソッドです。また、<code>iloc</code>は「integer-location」、<code>iat</code>は「integer-position」を意味します。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="特定位置の情報を選択する方法">特定位置の情報を選択する方法</h4>



<p>DataFrameにおける特定位置の値（例えば「2行1列の値」等）を選択する場合は、<code>loc</code>, <code>iloc</code>, <code>at</code>, <code>iat</code>を使用して以下の例のようにデータを選択ができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
attr3 = pd.Series([110, 120, 130, 140, 150], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2, "attr3": attr3})
print(df, "\n")

# 特定の位置を選択する
# 明示的なインデックスを使用する場合
print(df.loc["C", "attr2"], "\n")
# atを使っても同様のことができる
print(df.at["C", "attr2"], "\n")

# 暗黙的なインデックスを使用する場合
print(df.iloc[2, 1], "\n")
# iatを使っても同様のことができる
print(df.iat[2, 1])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2  attr3
A     10     60    110
B     20     70    120
C     30     80    130
D     40     90    140
E     50    100    150 

80 

80 

80 

80</pre>



<p>上記例のように<code>[]</code>内に、<code>[行のインデックス, 列のインデックス]</code>という形で指定することで該当する特定位置の値を取得することができます。</p>



<p><code>loc</code>や<code>at</code>は明示的なインデックスを対象にし、<code>iloc</code>や<code>iat</code>は暗黙的なインデックスを対象にします。特定位置の値を選択する場合には、<code>loc</code>と<code>at</code>、<code>iloc</code>と<code>iat</code>については結果は同じです。<code>loc</code>や<code>iloc</code>は以降で説明するようなスライスでのデータ選択にも対応しているという点で<code>at</code>や<code>iat</code>とは異なります。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="スライスで任意の行-列を選択する方法">スライスで任意の行、列を選択する方法</h4>



<p>DataFrameにおける任意の行、列をスライスで選択する場合は、<code>loc</code>, <code>iloc</code>を使用して以下例のようにデータ選択ができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import pandas as pd

attr1 = pd.Series([10, 20, 30, 40, 50], index=["A", "B", "C", "D", "E"])
attr2 = pd.Series([60, 70, 80, 90, 100], index=["A", "B", "C", "D", "E"])
attr3 = pd.Series([110, 120, 130, 140, 150], index=["A", "B", "C", "D", "E"])
df = pd.DataFrame({"attr1": attr1, "attr2": attr2, "attr3": attr3})
print(df, "\n")

# 任意の行、列を選択する（スライスを使用する例）
# 明示的なインデックスを使用する場合
print(df.loc["B":"D", "attr2":"attr3"], "\n")
# 暗黙的なインデックスを使用する場合
print(df.iloc[1:3, 1:2])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
   attr1  attr2  attr3
A     10     60    110
B     20     70    120
C     30     80    130
D     40     90    140
E     50    100    150 

   attr2  attr3
B     70    120
C     80    130
D     90    140 

   attr2
B     70
C     80</pre>



<p>上記例のように<code>[]</code>内に、<code>[行のスライス, 列のスライス]</code>という形で指定することで、指定した行の範囲、列の範囲に該当するデータを選択することができます。</p>



<p>ここで注意が必要なのは、明示的なインデックスでは終わりを含みますが、暗黙的なインデックスでは終わりを含まないことです。上記例の行スライスでいうと、例えば「<code>'B':'D'</code>」という指定であれば「<code>'D'</code>」は含みますが、「<code>1:3</code>」とすると<code>3</code>は含まれません。列スライスについても同様です。</p>



<h3 class="wp-block-heading jinr-heading d--bold">データ集約やピボットテーブル</h3>



<p>上記までは、対象DataFrameから対象の行を抽出する例を中心に様々な方法を紹介してきました。データ分析を行う際には、データをグループ化して集約処理したり、ピボットテーブルを作成したくなることがよくあります。</p>



<p>集約処理は、あるグループに対して合計や平均などを計算する処理で、単純にDataFrame全体を集約をすればよいわけではなく、ある区分ごとのグループ単位で集約処理を実施することでデータ分析に非常に有益な情報が得られます。pandasでは<code>groupby</code>メソッドが用意されていて簡単に処理が可能です。<code>groupby</code>については「<a href="https://tech.nkhn37.net/pandas-groupby-aggregation/" target="_blank" rel="noreferrer noopener">DataFrameをgroupbyでグループ化して集約する方法</a>」でまとめていますので参考にしてください。</p>



<p>また、ピボットテーブルもグループごとの情報を確認するためによく使われるものです。ピボットテーブルは<code>groupby</code>を用いても実現できますが、pandasでは<code>pivot_table</code>メソッドが用意されていて簡単に対処できます。<code>pivot_table</code>については「<a href="https://tech.nkhn37.net/pandas-dataframe-pivot-table/" target="_blank" rel="noreferrer noopener">DataFrameのpivot_tableでピボットテーブルを扱う</a>」でまとめていますので参考にしてください。</p>



<p>まずは本記事で紹介したような基本的なデータ選択方法を理解してもらい、<code>groupby</code>や<code>pivot_table</code>といった少し高度なデータ処理ができるようになると良いかと思います。</p>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p>pandasの<span class="marker"><strong>DataFrameのデータ選択方法</strong></span>について解説しました。</p>



<p>DataFrameのデータ選択方法として是非覚えておいて欲しいのは<span class="marker"><strong><code>loc</code></strong></span>, <span class="marker"><strong><code>iloc</code></strong></span>, <span class="marker"><strong><code>at</code></strong></span>, <span class="marker"><strong><code>iat</code></strong></span>といったデータ選択方法です。しかし、それらメソッドを使用しないデータアクセス方法も色々とあります。列名を指定しての取得やスライス、マスキング等の方法を紹介しています。</p>



<p>pandasを利用する際にとても重要になってくるのがDataFrameの扱いになってきます。是非、各種方法について扱えるようにしてほしいと思います。</p>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p>上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-data-analysis/pandas/dataframe-data-selection" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>

]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/pandas-dataframe-data-selection/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-04-08 07:41:57 by W3 Total Cache
-->