Python では、数秒で Dataframe に変換するネストされた JSON が導入されました。
Python チュートリアルこのコラムでは、JSON をネストする方法を紹介します
推奨 (無料): ##Python チュートリアル
API を呼び出すと、
を使用すると、ドキュメント データベースはネストされた JSON
オブジェクトを返します。 Python がネストされた構造内のキーを列に変換しようとすると、
pandas にロードされたデータは、多くの場合次の結果を取得します:
df = pd.DataFrame.from_records(results [“ issues”],columns = [“ key”,“ fields”])
JSON 構造を返し、注目するキーが実際にオブジェクト内の異なるレベルにあることです。
JSON 構造は次のようになります。
- key: JSON キー、第 1 レベル。
- summary: 第 2 レベルの「フィールド」オブジェクト。
- ステータス名: 第 3 レベルのポジション。
- statusカテゴリ名: 4 番目の入れ子レベルにあります。
JSON 構造内の 4 つの異なるネスト レベルに順番にあります。
{ "expand": "schema,names", "issues": [ { "fields": { "issuetype": { "avatarId": 10300, "description": "", "id": "10005", "name": "New Feature", "subtask": False }, "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "id": "5", "name": "Resolved", "statusCategory": { "colorName": "green", "id": 3, "key": "done", "name": "Done", } }, "summary": "Recovered data collection Defraglar $MFT problem" }, "id": "11861", "key": "CAE-160", }, { "fields": { ... more issues], "maxResults": 5, "startAt": 0, "total": 160 }
1 つのオプションは、直接コーディングして特定のフィールドを検索する関数を記述することですが、問題は、各埋め込みフィールドをこの関数を呼び出してフィールドを設定し、
DataFrame の新しい列に対して .apply
を呼び出します。 必要なフィールドをいくつか取得するために、まず列のフィールド キーのオブジェクトを抽出します。
df = ( df["fields"] .apply(pd.Series) .merge(df, left_index=True, right_index = True) )
上の表からわかるように、利用できるのは概要のみです。 issuetype、status など。ネストされたオブジェクトにまだ埋もれています。
以下は issuetype の名前を抽出するメソッドです。
# 提取issue type的name到一个新列叫"issue_type" df_issue_type = ( df["issuetype"] .apply(pd.Series) .rename(columns={"name": "issue_type_name"})["issue_type_name"] ) df = df.assign(issue_type_name = df_issue_type)
上記と同様、ネスト レベルが多すぎる場合は、再帰を自分で実装する必要があります。これは、ネストの各レベルで上記のようなメソッドを呼び出して解析し、新しい列に追加する必要があるためです。
プログラミングの基礎が弱い友達にとって、プログラミングの基礎を学ぶのは実はかなり面倒で、特にデータアナリストにとっては、データを活用したいと考えたとき、分析用の構造化データを早く入手したいと考えます。
現在、Dong 兄弟は
pandas 組み込みソリューションを共有しています。
pandas
には、.json_normalize
という素晴らしい組み込み関数があります。
のドキュメントには、半構造化された JSON
データをフラット テーブルに正規化することが記載されています。 前のソリューションのすべてのコードは、この組み込み関数を使用してわずか 3 行で完了できます。手順は非常に簡単で、次の使用法を理解するだけです。
必要なフィールドを決定し、. 記号を使用してネストされたオブジェクトを接続します。
処理したいネストされたリスト (ここでは
results["issues"]) をパラメーターとして .json_normalize
に入力します。 定義した FIELDS リストをフィルタリングします。
FIELDS = ["key", "fields.summary", "fields.issuetype.name", "fields.status.name", "fields.status.statusCategory.name"] df = pd.json_normalize(results["issues"]) df[FIELDS]
はい、とても簡単です。
その他の操作レコード パス
results["issues"]## を渡すことに加えて、上 #リストに加えて、
record_path パラメータを使用して、
JSON オブジェクト内のリストのパスを指定します。
# 使用路径而不是直接用results["issues"] pd.json_normalize(results, record_path="issues")[FIELDS]
カスタム区切り文字sep パラメータを使用して、ネスト構造接続の区切り文字をカスタマイズすることもできます。たとえば、デフォルトの「.」を「-」に置き換えます。下に 。
### 用 "-" 替换默认的 "." FIELDS = ["key", "fields-summary", "fields-issuetype-name", "fields-status-name", "fields-status-statusCategory-name"] pd.json_normalize(results["issues"], sep = "-")[FIELDS]
再帰の制御
各サブオブジェクトを再帰したくない場合は、max_level
パラメーターを使用して、深さ。この場合、statusCategory.name フィールドは
JSON オブジェクトのレベル 4 にあるため、結果の
DataFrame には含まれません。
# 只深入到嵌套第二级 pd.json_normalize(results, record_path="issues", max_level = 2)
以下は、
.json_normalize の pandas 公式ドキュメントの説明です。理解できない場合は、自分で学習してください。今回は、Dong 兄弟が説明します。ここでそれを紹介します。
pandas 公式ドキュメント: https://pandas.pydata.org/pan...
以上がPython では、数秒で Dataframe に変換するネストされた JSON が導入されました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

Pythonパラメーター注釈の代替使用Pythonプログラミングでは、パラメーターアノテーションは、開発者が機能をよりよく理解して使用するのに役立つ非常に便利な機能です...

Pythonスクリプトは、特定の場所のカーソル位置への出力をどのようにクリアしますか? Pythonスクリプトを書くときは、以前の出力をカーソル位置にクリアするのが一般的です...

毎日のネットワークインタラクションでPythonを使用したクラッキング検証コードの調査、検証コードは、自動化されたプログラムの悪意のある操作を防ぐための一般的なセキュリティメカニズムです...

多くの開発者はPypi(PythonPackageIndex)に依存しています...

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

Python:Hourglassグラフィック図面と入力検証この記事では、Python NoviceがHourglass Graphic Drawingプログラムで遭遇する可変定義の問題を解決します。コード...
