-
Pythonのタプルで起きる「+=」代入の謎をバイトコードで解き明かす
この記事では、本来変更不可(イミュータブル)であるはずのタプルの値を更新しようとしたときに何が起こるのかを解説します。新しい値とのマージは一見成功したように見えるのに、実際にはエラーがスローされる——この一見矛盾した挙動を、エラー発生時のバイトコードを詳しく調べることで、タプルの動作ルールへの理解を深めていきます。 タプルの要素を更新してみる まずタプルを定義し、その最後の要素(リスト)を更新するコマンドを実行してみましょう。 >>> tupl = (5,7,9,[1,4]) >>> tupl[3] += [6,8] 出力結果 上記のコードを実行すると
-
Pythonの組み込みデータ構造徹底解説|リスト・タプル・セット・辞書の基本と使い方
この記事では、Pythonに標準で組み込まれている4つの主要なデータ構造――リスト(List)、タプル(Tuple)、セット(Set)、辞書(Dictionary)について、それぞれの特徴と基本的な使い方をサンプルコードとともに解説します。 リスト(List) リストは、要素が順序付けられたシーケンス型のデータ構造です。単一の値を表すスカラー型とは異なり複数の要素をまとめて扱うことができ、ミュータブル(変更可能)な性質を持ちます。同じデータ型の要素しか格納できない配列と違って、リストでは文字列・整数・浮動小数点数・複素数など、異なるデータ型を自由に混在させられる点が大きな特徴です。 リストの個
-
NumPyを使った絶対偏差と平均絶対偏差(MAD)の計算方法
統計分析において、データの変動(ばらつき)を調べることは、与えられたデータサンプル内の値がどれだけ散らばっているかを把握するうえで重要です。変動を測る代表的な指標として、絶対偏差(Absolute Deviation)と平均絶対偏差(Mean Absolute Deviation)の2つがあります。 絶対偏差とは この方法では、まず対象となるサンプルの平均値を求めます。次に、各データ点とその平均値との差を計算します。これが各データサンプルの偏差です。平均よりも大きい値の偏差は正に、平均より小さい値の偏差は負になります。 続いて、NumPyのabsolute関数を使って各偏差の絶対値を取ることで
-
Pythonにインクリメント・デクリメント演算子はない?代わりの書き方を徹底解説
この記事では、Pythonにおけるインクリメント(増加)とデクリメント(減少)の実装方法について詳しく解説します。Pythonには「++」「--」演算子が存在しないC言語やJava、JavaScriptなどの多くのプログラミング言語には、値を1だけ増減させるための前置・後置インクリメント演算子(++)やデクリメント演算子(--)が用意されています。しかし、Pythonにはこれらの演算子は存在しません。これは「明示的であることが暗黙的であるよりも良い(Explicit is better than implicit)」というPythonの設計思想によるもので、コードの可読性を重視するためです。と
-
Pythonで行列(マトリックス)を初期化する2つの方法
はじめに この記事では、Python 3.xにおいて2次元リストを使って行列(マトリックス)を初期化する方法を解説します。行列の初期化には大きく分けて2つのアプローチがあり、それぞれ特徴が異なります。 方法1:リスト内包表記を使う(Pythonらしい書き方) まずは、Pythonならではの直感的な初期化方法です。リスト内包表記を活用することで、内側のリスト(各行)を生成しながら、それを複数行へと一気に拡張できます。コードが簡潔になり、Pythonicなスタイルとして好まれる書き方です。 コード例 # 行数を指定 N = 3 # 列数を指定 M = 3 # リスト内包表記で行列を初期化(各要
-
Pandasで学ぶ絶対頻度と相対頻度の求め方
統計学において「頻度(frequency)」とは、特定のデータサンプル内である値が出現した回数を指します。数学・科学分析向けのソフトウェアとして開発されたPandasには、与えられたサンプルから頻度を算出するための組み込みメソッドが多数用意されています。絶対頻度とは絶対頻度は、いわゆる「頻度」そのものであり、データ要素の出現回数をそのまま数えたものです。以下の例では、DataFrame内に都市名が何回出現するかを単純にカウントし、その結果を頻度として出力します。方法1:value_counts() を使うPandasの .value_counts() メソッドを使用する方法です。Seriesオ
-
Pythonのインプレース演算子を解説!iadd()・isub()・iconcat()の使い方
本記事では、Python 3.xで利用できるインプレース演算子(inplace operators)の中から、特に便利なiadd()、isub()、iconcat()の3つの関数について詳しく解説します。Pythonでは標準ライブラリの「operator」モジュールを活用することで、代入と計算を1つのステートメントで同時に実行するインプレース操作が可能になります。これにより、コードをより簡潔かつ読みやすく記述できます。iadd():加算と代入を同時に実行iadd()は、現在の値に加算を行い、その結果を変数に代入する関数です。動作は「a += b」と同等です。ただし、文字列やタプルなどのイミュー
-
Pythonのインプレース演算子ixor()・iand()・ipow()の使い方を徹底解説
はじめに 本記事では、Python 3.xで利用できるインプレース演算子(inplace operators)の一部について解説します。 Pythonでは、標準ライブラリの「operator」モジュールを利用することで、代入と計算を1つのステートメントで同時に行う「インプレース操作」を実現できます。ここでは、その中からixor()、iand()、ipow()の3つの関数を取り上げ、それぞれの使い方と実装例を見ていきましょう。 ixor() ― 排他的論理和(XOR)のインプレース演算 ixor()は、現在の値に対してXOR(排他的論理和)を計算し、その結果を代入する関数です。動作は「a ^=
-
【Pandas】DataFrameの先頭に新しい行を追加する方法
PandasにおけるDataFrameは、データを行と列の表形式で保持する2次元のデータ構造です。リスト、辞書、Series、別のDataFrameなど、さまざまなデータから作成できます。しかし、すでに作成済みのDataFrameに行を追加する場合、通常の方法では新しい行は末尾に追加されます。本記事では、インデックスを活用したテクニックによって、DataFrameの先頭に新しい行を追加する方法を2つ紹介します。なお、かつてはDataFrame.append()メソッドが行の追加によく使われていましたが、pandas 1.4以降で非推奨となり、pandas 2.0で削除されました。現在はpd.c
-
Pythonで2つのリストの共通要素を求める方法:ラムダ式とfilter関数を使った実装例
この記事では、Pythonにおいてラムダ式とfilter関数を組み合わせて、2つの配列(リスト)の共通部分(積集合)を求める方法を解説します。ここで扱う問題はシンプルです。「2つの配列が与えられたとき、両方に共通して含まれる要素をすべて見つけよ」というものです。集合演算のsetを使わずに、ラムダ式とfilter関数だけで実装する点がポイントになります。アルゴリズムの流れ処理の手順は以下の4ステップです。2つの引数を受け取る共通部分(intersection)を求める関数を定義します。ラムダ式でインライン関数を作成し、filter関数と組み合わせることで、「その要素がもう片方のリストにも含まれて
-
Pythonのappend()とextend()の違いをわかりやすく解説
Pythonのリストに要素を追加する際によく使われるメソッドが append() と extend() です。どちらもリストの要素数を増やすために使用しますが、動作は大きく異なります。この記事では、それぞれの特徴と違いを具体例とともに解説します。 append()メソッドとは append() は、渡された要素をリストの末尾に「1つの要素」として追加します。引数として渡せるのは1つだけです。仮に引数がリストであっても、そのリスト全体が「1つの要素」として元のリストに加わり、要素数は1だけ増えます。 構文: list_name.append(値) ※ 引数は1つのみ append()の使用
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print
-
Pandas DataFrameのすべての行に関数を適用する方法
Pandasでデータを加工する際、DataFrameのすべての行に対して同じ処理を一括で適用したいケースはよくあります。そんなときに便利なのが apply() メソッドです。axis=1 を指定することで、行方向に関数を適用できます。本記事では、ラムダ式とユーザー定義関数の2つの方法を具体的なコード例とともに解説します。 ラムダ関数を各行に適用する 最も手軽なのは、ラムダ式(無名関数)を apply() に渡す方法です。簡単な演算処理なら、わざわざ関数を定義せずに1行で書けます。 例 import pandas as pd df = pd.DataFrame([(10, 3, 13), (0
-
Pythonのintersection_update()メソッドでn個の配列から共通要素を抽出する方法
はじめにこの記事では、Pythonの intersection_update() メソッドを使って、n個の配列(リスト)に共通する要素を見つける方法について解説します。ここで扱う問題は、「複数のリストを含む配列が与えられたとき、すべてのリストに共通する要素をどのように求めるか」というものです。intersection_update()とは?intersection_update() はPythonのセット(set)型が持つメソッドの一つで、元のセット自身を「積集合」の結果で書き換えます。複数のセットやイテラブルに共通して存在する要素だけを残せるのが特徴で、新しいオブジェクトを作らずに元の変数を
-
【Pandas】DataFrameの列の文字列を大文字に変換する方法
Pandasでは、DataFrameの文字列型の列に含まれる値をまとめて大文字に変換したい場面がよくあります。本記事では、str.upper()メソッドを使う方法と、apply()メソッドにラムダ式を組み合わせる方法の2つを、具体的なコード例とともに解説します。 方法1:str.upper()を使う .str.upper()は、Series内のすべての文字列要素を一括で大文字に変換できるシンプルかつ高速な方法です。文字列アクセサ(.str)を介して呼び出すため、コードも非常に読みやすくなります。 例 import pandas as pd # データフレームを作成 df = pd.DataF
-
【Python入門】isdisjoint()関数の使い方を徹底解説!集合の共通要素を判定する方法
本記事では、Pythonのset(集合)型で使えるisdisjoint()関数の使い方について詳しく解説します。この関数は、引数として渡された2つの集合の間に共通する要素が存在するかどうかを判定します。共通要素が1つでも見つかった場合は False を返し、まったく存在しなければ True を返します。isdisjoint()関数は、set型だけでなく、リスト・タプル・辞書などのイテラブルも引数として受け取ることができます。これらの型は、Pythonインタープリタによって暗黙的にset型へ変換されたうえで比較されます。構文<set 1>.isdisjoint(<set 2&g
-
Pythonのissubset()メソッドとは?部分集合の判定方法を実例付きで解説
この記事では、Python標準ライブラリで利用できるissubset()メソッドの基本的な仕組みと実践的な使い方について詳しく解説します。 issubset()メソッドとは issubset()は、ある集合(セット)のすべての要素が、引数として渡した別の集合に含まれているかどうかを判定するメソッドです。すべての要素が含まれていればブール値のTrueを返し、1つでも含まれていない要素があればFalseを返します。 たとえば、集合Bの全要素が集合Aにも存在する場合、「BはAの部分集合(サブセット)」であると言えます。また、AとBが完全に同じ要素を持つ同一の集合である場合も、互いに部分集合の関
-
Pythonのascii()関数とは?使い方と実行例をわかりやすく解説
ASCIIは「American Standard Code for Information Interchange(アメリカ標準情報交換コード)」の略称で、文字をコンピュータ上で表現するための文字エンコーディング規格です。たとえば、英字アルファベットの「A」に対応するASCII値は65です。Pythonには、オブジェクトを印字可能な(printable)形式で取得するための組み込み関数 ascii() が用意されています。この関数は引数を1つだけ受け取り、リスト、文字列、タプルなど任意のオブジェクトを指定できます。戻り値は、非ASCII文字が \x、\u、\U のいずれかのエスケープシーケンス
-
Pythonのisupper()・islower()・upper()・lower()メソッドの使い方を徹底解説
本記事では、Python 3.x(およびそれ以前のバージョン)で利用できる文字列操作メソッドである isupper()、islower()、upper()、lower() の4つについて、具体例を交えながらわかりやすく解説します。 4つのメソッドの概要 これらはすべて文字列(str型)に対して使用できる組み込みメソッドで、Python標準ライブラリに含まれています。それぞれの役割は以下の通りです。 isupper():文字列内の英字がすべて大文字かどうかを判定し、真偽値(True / False)を返す islower():文字列内の英字がすべて小文字かどうかを判定し、真偽値(True /
-
Pythonでリストを逆順に反復処理する3つの方法
プログラミングをしていると、リストの要素を後ろから順に処理したい場面があります。その場合、最後の要素から読み始め、末尾から2番目、さらにその前というように、インデックス0の要素まで処理を進めていきます。Pythonにはこの目的を達成するためのさまざまな機能が用意されており、本記事では代表的な3つの方法をサンプルコードとともにわかりやすく解説します。 range(N, -1, -1) を使う方法 range関数を使用する際、開始位置として「リストの長さ - 1」を指定し、終了位置を -1、ステップを -1 に設定します。こうすることで、最後のインデックスから先頭に向かって1つずつ減らしながら要