-
Pythonのapplymapを使ってデータフレーム内の全列の要素の長さを出力する方法
pandasのデータフレームに含まれるすべての列の要素の長さを一括で求めたい場面はよくあります。本記事では、df.applymapとラムダ関数(lambda)を組み合わせることで、各セルの文字数を簡単に出力する方法を解説します。実行結果のイメージデータフレーム内のすべての列の要素の長さを求めると、次のような結果が得られます。Dataframe is: Fruits City 0 Apple Shimla 1 Orange Sydney 2 Mango Lucknow 3 Kiwi Wellington Length of th
-
Pythonで2つのデータフレームのクロス集計表(分割表)を作成する方法
はじめにデータ分析では、2つのデータフレームを組み合わせてクロス集計表(分割表)を作成したい場面がよくあります。例えば、以下のような2つのデータフレームがあるとします。df:IdとAge(年齢)を持つデータフレームdf1:Mark(点数)を持つデータフレームこれらをクロス集計すると、結果は次のようになります。Age 12 13 14Mark 80 90 85Id1 1 0 02 0 1 03 1 0 04 0 1 05 0 0 1解決手順この問題は、以下の手順で解決できます。2つのデータフレ
-
Pythonでデータフレームの特定の軸名を変更する方法
pandasのデータフレームを扱う際、列方向の軸(columns)に任意の名前を付けたいケースがあります。本記事では、rename_axis()メソッドを使ってデータフレーム内の特定の軸の名前を変更する方法を解説します。例として、以下のようなデータフレームがあるとします。軸名を変更すると、結果は次のようになります。Rename index: index Id Age Mark 0 1.0 12.0 80.0 1 2.0 12.0 90.0 2 3.0 14.0 NaN 3
-
Pythonでデータフレームの欠損値(NaN)をすべて補間して埋める方法
解決策この問題を解決するには、以下の手順に従います。欠損値(NaN)を含むデータフレームを定義します。df.interpolate() 関数に method=linear、limit_direction=forward、limit=2 を指定して適用し、欠損値を補間して埋めます。Pandas の interpolate() メソッドは、欠損値を前後の値から推定して補間できる便利な機能です。method=linear は線形補間を行い、limit_direction=forward は前方方向へ補間することを意味します。また、limit パラメータでは連続して埋める欠損値の最大数を指定できます。
-
Pythonでデータフレームの調整済み・未調整EWM(指数加重移動平均)を計算する方法
pandasでは、ewm()メソッドを使うことで、欠損値(NaN)を含むデータフレームに対しても指数加重移動平均(EWM:Exponentially Weighted Mean)を簡単に計算できます。この記事では、調整済み(adjust=True)と未調整(adjust=False)の2種類のEWMを計算する方法を解説します。期待される出力あるデータフレームに対して、調整済みと未調整それぞれのEWMを計算すると、結果は以下のようになります。adjusted ewm: Id Age 0 1.000000 12.000000 1 1.750000 12.750000 2
-
PythonでDataFrameの行をタプルのリストを持つOrderedDictとして出力する方法
Pythonのpandasライブラリを使って、データフレーム(DataFrame)の各行を「タプルのリストを含むOrderedDict」として出力する方法を解説します。この手法は、行データをキーと値のペアとして順序を保ったまま扱いたい場合に非常に便利です。期待される出力結果データフレームが与えられたとき、最終的に以下のようなOrderedDict(タプルのリスト形式)が出力されます。OrderedDict([(Index, 0), (Name, Raj), (Age, 13), (City, Chennai), (Mark, 80)]) OrderedDict([(Index, 1), (Na
-
Pythonでデータフレーム内のレコードをC順序・F順序でフラット化するプログラムを作成する方法
データフレームがあり、そのレコードをC順序(行優先)とF順序(列優先)でフラット化すると、結果は以下のようになると仮定します。flat c_order: [10 12 25 13 3 12 11 14 24 15 6 14] flat F_order: [10 25 3 11 24 6 12 13 12 14 15 14]解決策この問題を解くには、以下の手順に従います。まず、データフレームを定義します。次に、df.values.ravel()関数に引数order=Cを指定して呼び出し、結果をC_orderとして保存します。C順序は行優先(row-major)方式で、各行の要素を
-
Pythonで開始日と終了日の範囲から合計営業日数を計算する関数の作成方法
データ分析や業務システムの開発では、開始日と終了日の間に含まれる「営業日(平日)」の日数を求めたい場面がよくあります。Pythonのpandasライブラリを使えば、この処理を簡単に実装できます。本記事では、pd.bdate_range()を活用して、指定した期間内の合計営業日数を計算するPython関数を2つの方法で紹介します。期待する出力結果まず、2020年1月1日から2020年2月2日までの期間に対して営業日を抽出すると、以下のような結果が得られます。土曜日と日曜日は自動的に除外されている点に注目してください。Dates are: DatetimeIndex([2020-01-01, 20
-
Pythonでデータフレーム内の欠損値が最も少ない列を見つける方法
pandasのデータフレームを扱っていると、各列に含まれる欠損値(NaN)の数を確認し、その中で最も欠損値が少ない列を特定したい場面があります。例えば、以下のようなデータフレームがあった場合、欠損値の数が最小の列は「Id」です。DataFrame is: Id Salary Age 0 1.0 20000.0 22.0 1 2.0 NaN 23.0 2 3.0 50000.0 NaN 3 NaN 40000.0 25.0 4 5.0 80000.0 NaN 5 6.0 NaN 25.0 6 7.0 3500
-
PythonでDataFrameの各列から2番目に小さい値を取得する方法
はじめにpandasのDataFrameを扱っていると、各列の中から「2番目に小さい値」を抽出したい場面があります。例えば、以下のようなDataFrameがある場合、各列の2番目に小さい値は次のようになります。Id 2Salary 30000Age 23この記事では、この問題を解決するための手順と具体的なコード例をわかりやすく解説します。解決手順各列の2番目に小さい値を求めるには、以下のステップに従います。まず、対象となるDataFrameを定義します。次に、df.apply()関数を使い、その中でlambda関数を作成します
-
Pythonで1〜100の乱数30個からデータフレームを作成し、各行の「最大値÷最小値」を計算する方法
この記事では、Pythonを使って1から100までの範囲でランダムに生成した30個の要素からなる配列を作成し、それをデータフレームに変換した上で、各行における「最大値 ÷ 最小値」の比率を計算する方法を解説します。まず、実行結果の例を見てみましょう。各行の最大値を最小値で割った結果は以下のようになります。0 43.000000 1 1.911111 2 2.405405 3 20.000000 4 7.727273
-
Pythonで時系列データの最初と最後の3日間を抽出して表示する方法
pandasの時系列データが与えられたとき、その先頭の3日間と末尾の3日間に含まれるデータを抽出したいケースはよくあります。 例えば、次のような時系列データから以下の結果を取得することを想定します。 first three days: 2020-01-01 Chennai 2020-01-03 Delhi Freq: 2D, dtype: object last three days: 2020-01-07 Pune 2020-01-09 Kolkata Freq: 2D, dtype: object 解決の手順 この問題は、以下の手順で解決できます。 Series
-
区切り文字で文字列を分割してPandasのSeriesに変換するPython関数の書き方
PythonとPandasを使って、区切り文字(デリミタ)に基づいて文字列を分割し、その結果をSeriesに変換する方法を解説します。例えば、タブ文字「\t」で区切られた文字列を分割すると、以下のようなSeriesが得られます。 0 apple 1 orange 2 mango 3 kiwi dtype: object この問題を解決するために、2つのアプローチを紹介します。 解決策1:独自の関数を定義する まず、文字列と区切り文字の2つの引数を受け取る関数 split_str() を定義する方法です。処理の流れは以下の通りです。 文字列(string)と区切り文字(
-
TensorFlowとPythonを使ってトレーニング結果を可視化する方法
TensorFlowで学習したモデルのトレーニング結果は、Pythonの「matplotlib」ライブラリを使うことで簡単に可視化できます。「plot」メソッドを利用して、エポックごとの精度(Accuracy)や損失(Loss)の推移をグラフとして描画します。本記事では、KerasのSequential APIを使用します。Sequential APIは、各レイヤーがちょうど1つの入力テンソルと1つの出力テンソルを持つ、単純な層のスタックからなるシーケンシャルモデルを構築するのに便利なAPIです。少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは
-
TensorFlowとPythonでデータ拡張(Augmentation)を使って過学習を減らす方法
データ拡張(Data Augmentation)は、訓練データに新たなサンプルを追加することで過学習(オーバーフィッティング)を軽減するための有効な手法です。具体的には、「RandomFlip」レイヤーなどを含むSequentialモデルを作成して実装します。 前提知識:Keras Sequential APIとCNN 本記事では、KerasのSequential APIを使用します。このAPIは、各レイヤーが正確に1つの入力テンソルと1つの出力テンソルを持つ、単純なレイヤーの積み重ねからなるモデルを構築するのに適しています。 少なくとも1つの畳み込み層(Convolutional Layer
-
Python(pandas)でSeriesの各要素から部分文字列をスライスして抽出する方法
pandasのSeriesに格納された文字列データから、各要素の部分文字列を抽出したいケースはよくあります。例えば、以下のようなSeriesがあるとします。0 Ap 1 Oa 2 Mn 3 Kwこの結果を得るために、主に2つのアプローチがあります。それぞれ順番に見ていきましょう。解決策1:str.slice()メソッドを使う方法まず、対象となるSeriesを定義します。str.slice()メソッドに対して、start=0(開始位置)、stop=4(終了位置)、step=2(ステップ幅)を指定することで、各要素から部分文字列をスライスして取り出します。data.str.
-
Pythonでデータフレームのローリングウィンドウ平均を計算するプログラムの作成方法
はじめに pandasのデータフレームに対して、連続する行ごとの平均値(移動平均)を計算したいケースはよくあります。例えば、次のようなデータフレームがあるとします。 Id Age Mark 0 1 12 80 1 2 12 90 2 3 14 70 3 4 13 95 4 5 50 85 5 6 70 90 このデータフレームにローリングウィンドウ(窓)サイズ2の平均計算を適用すると、結果は以下のようになります。 Average of rolling window is: Id Age
-
Pythonで一意な値をソートした数値インデックス配列を出力するプログラムの作成方法
データ分析では、重複を含む系列(リストやSeries)から一意な値を抽出し、それらに対応する数値インデックス配列を取得したい場面がよくあります。特に、一意な値をアルファベット順にソートした上でインデックスを振り直したい場合は、pandasのpd.factorize()関数が便利です。たとえば、次のような出力を目指します。Sorted distinct values - numeric array index [2 3 0 3 2 1 4] [apple kiwi mango orange pomegranate]解決策pd.factorize()は、配列内の一意な値を検出し、それぞれに整数コー
-
Python・Pandasで日時列から日付と時刻を分離するプログラムの作り方
データ分析では、DataFrame内の日時(datetime)列を「日付」と「時刻」に分けて扱いたい場面がよくあります。たとえば、日ごとの集計を行いたい場合や、時間帯だけを取り出して分析したい場合などが挙げられます。この記事では、datetime 列を date 列と time 列に分割する方法を、2つのアプローチで解説します。目標とする出力イメージ datetime date time 0 2020-01-01 07:10:00 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2020-01-02 07
-
Pythonでデータフレームのタイムゾーンをアジア地域にローカライズする方法
はじめに時系列データを扱う際、タイムゾーンのローカライズは重要な前処理の一つです。この記事では、pandasを使用して、特定のデータフレームのインデックスをアジアのタイムゾーン(例:Asia/Calcutta)にローカライズする方法を解説します。今回作成するプログラムを実行すると、以下のようにローカライズされたDatetimeIndexが得られます。Index is:DatetimeIndex([2020-01-05 00:30:00+05:30, 2020-01-12 00:30:00+05:30,