-
【初心者向け】PythonのNone(ヌル)オブジェクトとは?基本から実例まで徹底解説
Pythonには、他のプログラミング言語でいう「null」に相当するオブジェクトは存在しません。しかし、それに最も近い存在としてNoneという特別なオブジェクトが用意されています。この記事では、PythonにおけるNoneの基本的な挙動について、実行例を交えながら詳しく解説します。 Noneの型を確認してみる まず、Noneの型を確認しましょう。Pythonには「Null」という型や名前は存在せず、Noneオブジェクトの型はNoneTypeです。 例 print(type(None)) print(type(Null)) 出力 <class NoneType> Traceback
-
PythonでXMLを処理する方法:ElementTreeとDOMの基本を解説
XMLは「Extensible Markup Language(拡張可能マークアップ言語)」の略称です。主にWebページなど、データが特定の構造を持つ場面で利用されています。XMLは要素(element)で構成され、各要素は開始タグと終了タグによって定義されます。タグとは、<で始まり>で終わるマークアップ構造のことです。開始タグと終了タグに挟まれた文字列がその要素の内容となり、要素の中にさらに別の要素を含めることもできます。これらは「子要素」と呼ばれます。 サンプルXMLファイル 以下は、このチュートリアルで使用するXMLファイルの例です。チュートリアル情報をまとめたシンプルなデ
-
PythonでXML-RPCサーバーとクライアントを実装する方法
XML-RPCプロトコルを利用すると、クロスプラットフォームかつ言語に依存しない独自のサーバーを構築できます。PythonではSimpleXMLRPCServerクラスを使ってサーバーインスタンスを作成し、着信リクエストを待ち受けさせます。その後、サービスとして公開する関数を定義し、サーバーに登録することで、クライアントからの呼び出しが可能になります。 サーバーの起動 以下の例では、SimpleXMLRPCServerインスタンスを使ってサーバーを作成し、組み込み関数や独自に定義したカスタム関数を登録しています。最後にサーバーを無限ループに入れ、リクエストを受け付けて応答し続ける状態にします。
-
PythonでPhantomJSとSelenium WebDriverを使ってウィンドウサイズを設定する方法
PhantomJSとSelenium WebDriverでウィンドウサイズを設定する方法Pythonでは、PhantomJSとSelenium WebDriverを組み合わせることで、ブラウザのウィンドウサイズを自由に制御できます。PhantomJSを利用するには、まずwebdriver.PhantomJSクラスのドライバーオブジェクトを作成します。その際、phantomjs.exeドライバーファイルへのパスを引数として渡してください。ウィンドウサイズを設定するには、set_window_sizeメソッドを使用し、幅と高さを引数として指定します。また、現在のブラウザのウィンドウサイズを取得した
-
PythonとSelenium WebDriverで特定のドメインにCookieを設定する方法
PythonのSelenium WebDriverでは、特定のドメインに対してCookieを設定することができます。Cookieはブラウザが送受信する情報を保持するために使われるもので、キーと値(key-value)のペア形式で構成され、サーバーからブラウザへ渡されるメッセージのような役割を果たします。Cookieを追加するにはadd_cookieメソッドを使用します。このメソッドにはキーと値がパラメータとして渡されます。すべてのCookieを取得したい場合はget_cookiesメソッドを、特定のCookieだけを取得したい場合はget_cookieメソッドを使用します。また、Cookieを
-
Pythonで解く誕生日のパラドックス!確率計算の仕組みとサンプルコード
誕生日のパラドックスとは? 誕生日のパラドックス(Birthday Paradox)は、確率論における最も有名な問題のひとつです。直感に反する結果が得られることから「パラドックス(逆説)」と呼ばれています。 問題設定: 誕生日パーティーに集まった人々の中に、同じ誕生日の人(誕生日の衝突)がいる確率を考えます。同じ誕生日を持つ人が存在する確率がある値に達するためには、およそ何人の人が必要かを求めるのがこの問題の目的です。 直感とのギャップ 確率の世界では、コインを投げて表が出る確率は 1/2 です。同様に、コインを10回投げてすべて表になる確率は約 1/1000(0.001)程度しかありません
-
Pythonで「おいしい食事」の組み合わせを数えるアルゴリズム
問題の概要「良い食事(Good Meal)」とは、ちょうど2つの異なる食品で構成され、そのおいしさの合計が2のべき乗(1, 2, 4, 8, 16, …)と一致する組み合わせを指します。食品リストの中から任意の2つを選んで「良い食事」を作ることができます。ここでは、整数型の配列 arr が与えられ、arr[i] は i 番目の食品のおいしさを表すものとします。このリストから作成できる「良い食事」の組み合わせの総数を返す関数をPythonで実装してみましょう。入力例1arr[ ] = {1, 3, 5, 7, 9}出力:4説明:「良い食事」となるのは (1,3)、(1,7)、(3,5)、(7,9
-
Pythonで数Nの桁数を数えるプログラムの書き方
ある数Nが与えられたとき、その数に含まれる桁の総数を求めることを考えましょう。例えば以下のようなケースです。入力例1:N = 891452出力:6解説: 与えられた数891452は6桁の数字で構成されているため、この場合は「6」を返します。入力例2:N = 0074515出力:5解説: 先頭の0を除いた有効な桁数が5桁であるため、出力は「5」となります。この問題を解くためのアプローチこの問題は、次の手順で解決できます。数値nを入力として受け取ります。関数countDigits(n)が入力nを受け取り、桁数をカウントして返します。数値の各桁に対してループ処理を行い、カウンター変数を1ずつ増加させ
-
Pythonで配列のマジョリティ要素(過半数を占める要素)を見つける方法
整数の配列が与えられたとき、その中で最も多く出現する要素(マジョリティ要素)を求めることを考えてみましょう。 問題の例 入力例1: N = 8A[ ] = { 1, 2, 4, 3, 3, 1, 1, 5 } 出力: 1 説明:この配列の中で最も多く出現している数は「1」です。したがって、出力は「1」となります。 入力例2: N = 6A[ ] = { 1, 5, 4, 4, 1, 1 } 出力: 1 説明:この配列でも最も多く出現しているのは「1」なので、「1」を結果として返します。 この問題へのアプローチ 配列に含まれる複数の整数の中から、最も頻度の高い要素を見つける必要があります。計算
-
Pythonで数値内のすべての0を5に置き換えるプログラムを作成する方法
整数 N が与えられたとき、その数値に含まれるすべての「0」を「5」に置き換えることが課題です。ただし、先頭にある「0」は有効な桁として扱われないため、置き換えの対象から除外されます。それでは、具体的な例を見てみましょう。 入力例1 N = 1007 出力 1557 解説: 与えられた数値には2つの「0」が含まれており、これらを「5」に置き換えると「1557」になります。 入力例2 N = 00105 出力 155 解説: 先頭の「0」は無視され、中央の「0」を「5」に置き換えることで「155」という出力が得られます。 この問題を解くためのアプローチ 数値内のすべての「0」を「5」に置き換える
-
Python PandasでSeries内の複数の特殊文字を含む単語の総数を求める方法
PandasのSeriesに含まれる各文字列の中から、2つ以上の特殊文字を持つ要素の総数を求める方法を、複数のアプローチに分けて解説します。 問題の概要 入力 − 次のようなSeriesがあると仮定します。 0 fruits!! 1 *cakes* 2 $nuts 3 #drinks dtype: object 期待される結果 − 2つ以上の特殊文字を含む要素の総数は「2」です。この例では「fruits!!」(!が2個)と「*cakes*」(*が2個)が該当します。 それでは、この問題に対する複数の解決策を見ていきましょう。 解決策1:forループとstring.pun
-
PandasのSeriesから完全平方数を抽出・フィルタリングするPythonプログラム
データ分析では、数値の系列(Series)の中から特定の条件を満たす要素だけを取り出したい場面がよくあります。本記事では、PandasのSeriesから完全平方数(4、9、16、25のように、ある整数の2乗で表せる数)だけをフィルタリングする方法を、複数のアプローチでわかりやすく解説します。 入力例と出力例 次のようなSeriesを想定します。 0 14 1 16 2 30 3 49 4 80 dtype: int64 この中から完全平方数である要素だけを抽出すると、結果は次のようになります。 1 16 3 49 dtype: int64 解法1:
-
Pythonで偶数インデックスの小文字アルファベットから5つのランダム値を持つSeriesを生成する方法
Pythonでは、stringモジュールとrandomモジュール、そしてpandasを組み合わせることで、小文字アルファベットの中から偶数インデックスの文字だけを抽出し、その中からランダムに5つ選んでSeriesを生成できます。ここでは2つの解決方法を紹介します。 解決方法1:スライスを使った効率的なアプローチ この方法では、以下の手順で処理を行います。 string.ascii_lowercaseで小文字アルファベット(a〜z)を取得し、リスト化します。 Pythonのスライス記法[::2]を使うことで、偶数インデックスの要素だけを簡単に抽出できます。 random.sample()で抽出
-
Pythonでpandas Seriesから有効な日付だけをフィルタリングする方法
データ分析では、文字列として格納された日付の中から、正しい形式の日付だけを抽出したい場面がよくあります。この記事では、Pythonのpandasと正規表現(reモジュール)を使って、Series内から「YYYY-MM-DD」形式の有効な日付だけをフィルタリングする方法を2通り紹介します。 入力データと期待される出力 次のようなSeriesがあると仮定します。 0 2010-03-12 1 2011-3-1 2 2020-10-10 3 11-2-2 この中で「年4桁・月2桁・日2桁」という形式に合致する有効な日付は、以下の2つです。 0 2010-0
-
PythonでSeriesの奇数インデックス位置をランダムな大文字母音に置き換える方法
pandasのSeriesオブジェクトに含まれる奇数インデックス位置の値を、ランダムに選択した大文字の母音(A、E、I、O、U)へ置き換える方法を解説します。この処理は、標準ライブラリのrandomモジュールとSeriesのループ処理を組み合わせることで、シンプルに実現できます。入力例と出力例入力次のようなSeriesが与えられたとします。0 1 1 2 2 3 3 4 4 5出力奇数インデックス(1と3)の値を大文字母音で置き換えると、結果は以下のようになります。0 1 1 A 2 3 3 U 4 5解決の手順対象となるSeries
-
PythonでpandasのSeriesから整数要素のみを抽出・フィルタリングする方法
文字列と整数が混在するpandasのSeriesから、整数要素のみを抽出する方法を、2つの異なるアプローチで解説します。 入力データと期待される出力 入力 ― 次のようなSeriesを想定します。 0 1 1 2 2 python 3 pandas 4 3 5 4 6 5 出力 ― 整数要素のみを抽出した結果は以下の通りです。 0 1 1 2 4 3 5 4 6 5 解法1:type()でデータ型を判定する pandasのSeriesを定義します。 forループとitems()メソッドでインデックスと値を順番に取り
-
PythonでpandasのSeriesに重複する要素が含まれているかどうかを確認する方法
データ分析を行う際、pandasのSeriesに重複した要素が含まれていないかを確認したいケースはよくあります。本記事では、Pythonを使ってSeries内の重複要素を検出する方法を、具体的なコード例とともに解説します。前提:対象となるデータまず、以下のようなSeriesを例として考えてみましょう。0 1 1 2 2 3 3 4 4 5このSeriesには重複する要素が存在しません。以降では、これをプログラムで検証するためのアプローチを紹介します。方法1:len()関数とnp.unique()を組み合わせる最もシンプルな方法は、元のSeriesの長さと、np.u
-
Pythonでpandas Seriesに含まれる整数・浮動小数点・文字列のデータ型別カウント方法
はじめにpandasのSeriesには、整数(int)、浮動小数点数(float)、文字列(str)など、さまざまなデータ型が混在していることがあります。本記事では、Pythonを使って特定のSeries内の各データ型の要素数をカウントするプログラムを作成する方法を解説します。問題設定入力 − 次のようなSeriesが与えられていると仮定します。0 1 1 2 2 python 3 3 4 4 5 5 6 6.5出
-
【Python】PandasのSeriesから特定の範囲の要素を抽出して表示する方法
はじめにデータ分析では、PandasのSeriesから特定の範囲に含まれる値だけを取り出したい場面がよくあります。本記事では、「10以上15以下」の要素を抽出して表示するプログラムを、2つの異なるアプローチで実装する方法を解説します。入力 − 次のようなSeriesがあるとします。0 12 1 13 2 15 3 20 4 19 5 18 6 11出力 − 10から15の範囲にある要素を抽出すると、結果は次のようになります。0 12 1 13 2 15 6 11解決策1:between()メソッドを使うPandasには、指定した
-
Pythonでpandas Seriesの指定インデックス要素が数字かどうかを判定する方法
はじめにpandasのSeriesデータから、ユーザーが指定したインデックス位置にある要素が「数字」なのか、それとも「アルファベット(文字列)」なのかを判定するプログラムを作成してみましょう。この処理は、入力データのバリデーションや前処理を行う際に非常に役立ちます。前提となるデータまず、以下のようなSeriesが用意されているものとします。a abc b 123 c xyz d ijkこのSeriesには、アルファベットのみで構成された値と、数字のみで構成された値が混在しています。解決の手順この問題を解決するために、以下のステップに従ってプログラムを組み立てます。辞書型