【ステップアップ】「Pythonの実践」簡単速習‼【Webとネットワーク/応用③】

こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムやBI開発を行っています。

本記事の目的は、「pythonの基本操作を知る」ことを目的としています。

【ステップアップ】「Pythonの実践」簡単速習‼【データベース/応用②】

【本記事のもくじ】

まず、「Python」に真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。

  • 1.Webとネットワーク

それでは、上から順番に見ていきます。
なお、本上記の方法を順番に抑えれば成果が出ます。

記事の内容は「転載 & 引用OK」問題ありません。

1.Webとネットワーク

XML

XML(Extensible Markup Language)は、データをマークアップするための言語で、テキスト形式で書かれます。XMLは、構造化されたデータを表現するのに非常に有用であり、多くの場合、Webサイトの構造、データのやり取り、データベースのエクスポート/インポート、アプリケーションの設定などで使用されます。

RESTのAPIで使われたりします。

XML文書は、ルート要素で始まり、その要素内にネストされた子要素を持つことができます。各要素はタグで表され、開始タグと終了タグで囲まれます。例えば、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>

この例は、2つの要素で構成されています。最初の要素は「bookstore」という名前のルート要素であり、2つの子要素「book」を持っています。各「book」要素は、本のタイトル、著者、出版年、価格などの情報を含む属性を持っています。タグ内に属性を記述するには、属性名を指定し、属性値をダブルクォーテーションで囲みます。上記の例では、「book」要素に「category」という属性があり、「cooking」と「children」という2つの値があります。

XMLは、データをより簡単に解析できるようにするために、スキーマ言語(XSD、DTD)を使用して構造を定義することもできます。これにより、ドキュメントの構造が自動的に検証され、不正なデータが含まれている場合は、エラーが報告されます。

pythonでxmlを使う

XMLを解析するには、まずxmlモジュールをインポートします。以下のように、ElementTreeクラスを使用してXMLを解析することができます。

import xml.etree.ElementTree as ET
# XMLをパースする
xml_data = """
<root>
<person>
<name>John Smith</name>
<age>30</age>
</person>
<person>
<name>Jane Doe</name>
<age>25</age>
</person>
</root>
"""
root = ET.fromstring(xml_data)

# ノードを表示する
for person in root.findall('person'):
name = person.find('name').text
age = person.find('age').text
print(f'{name} is {age} years old')

この例では、ET.fromstringメソッドを使用してXMLを解析し、findallメソッドとfindメソッドを使用して、ノードを検索しています。最後に、検索結果を表示しています。

import xml.etree.ElementTree as ET
# XMLを作成する
root = ET.Element('root')
person1 = ET.SubElement(root, 'person')
name1 = ET.SubElement(person1, 'name')
name1.text = 'John Smith'
age1 = ET.SubElement(person1, 'age')
age1.text = '30'
person2 = ET.SubElement(root, 'person')
name2 = ET.SubElement(person2, 'name')
name2.text = 'Jane Doe'
age2 = ET.SubElement(person2, 'age')
age2.text = '25'
# XMLを出力する
xml_str = ET.tostring(root, encoding='utf8', method='xml').decode()
print(xml_str)
# XMLをファイルに保存する
with open('data.xml', 'w') as f:
f.write(xml_str)

この例では、ET.ElementメソッドとET.SubElementメソッドを使用して、XMLを作成しています。最後に、ET.tostringメソッドを使用して、XMLを文字列に変換し、openメソッドを使用してファイルに保存しています。

以上のように、Pythonのxmlモジュールを使用することで、XMLを解析や作成することができます。

具体例

以下は、XMLを使用してデータを保存する例です。

Json

JSON (JavaScript Object Notation) は、JavaScriptのオブジェクト表記法を基にした軽量のデータ交換フォーマットで、テキスト形式で書かれます。JSONは、WebアプリケーションやAPIなどでよく使われるフォーマットであり、構造化されたデータを表現するために使用されます。JSONの方がXMLよりも早い情報交換が可能です。

JSONは、オブジェクト、配列、値、文字列、数値、真偽値、nullの7つのデータ型をサポートしています。オブジェクトと配列は、キーと値のペアで構成されます。配列は、インデックス番号でアクセスされるオブジェクトのコレクションであり、オブジェクトは、キーでアクセスされるプロパティのコレクションです。値は、数値、文字列、真偽値、nullのいずれかの値を表します。

以下は、JSONの例です。

{
"firstName": "John",
"lastName": "Doe",
"age": 26,
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
},
"phoneNumbers": [
{
"type": "home",
"number": "555-555-1234"
},
{
"type": "work",
"number": "555-555-5678"
}
]}

この例は、1つのオブジェクトで構成されています。オブジェクトには、”firstName”、”lastName”、”age”、”address”、”phoneNumbers”の5つのキーがあり、それぞれに対応する値があります。”address”の値は、さらに4つのプロパティを持つオブジェクトです。”phoneNumbers”の値は、2つのオブジェクトからなる配列です。

JSONは、XMLよりも簡単に読み書きできるため、WebアプリケーションやAPIのような場面でよく使われます。また、JavaScriptを始めとする多くの言語で、JSONの解析や生成が標準的にサポートされています。

pythonでJsonを使う

PythonでJSONを使うには、標準ライブラリのjsonモジュールを使用します。以下に、JSONの基本的な使い方と具体例を示します。

jsonモジュールを使用することで、JSONの読み込みや書き込みが可能になります。以下の例では、JSONを読み込んで表示する方法と、JSONを書き込む方法を示しています

import json
# JSONを読み込む
json_str = '{"name": "John Smith", "age": 30}'
data = json.loads(json_str)
print(data['name'], data['age'])
# JSONを書き込む
data = {'name': 'Jane Doe', 'age': 25}
json_str = json.dumps(data)
print(json_str)

この例では、json.loadsメソッドを使用してJSONを読み込み、json.dumpsメソッドを使用してJSONを書き込んでいます。JSONオブジェクトは、Pythonの辞書として扱われます。

具体例

以下は、PythonでJSONを使用してAPIからデータを取得する例です。requestsモジュールを使用して、APIからJSONを取得し、jsonモジュールを使用してJSONを解析します。

import requests
import json
# APIからJSONを取得する
response = requests.get('https://jsonplaceholder.typicode.com/todos')
json_data = response.text
# JSONを解析する
data = json.loads(json_data)
# データを表示する
for item in data:
print(f"ID: {item['id']}, Title: {item['title']}, Completed: {item['completed']}")

この例では、requests.getメソッドを使用してAPIからJSONを取得し、json.loadsメソッドを使用してJSONを解析しています。取得したデータは、itemという名前の変数に格納され、ループ処理で一つずつ表示しています。

※出力は「’ ’」ではなく「””」で出力されます。

以上のように、Pythonのjsonモジュールを使用することで、JSONを読み込んだり書き込んだりすることができます。また、APIからデータを取得して解析する場合にも役立ちます。

dump

dumpは、Pythonのjsonモジュールで提供されるメソッドの一つで、PythonオブジェクトをJSON形式の文字列としてファイルに書き出すことができます。

具体的には、json.dumpメソッドを使用することで、PythonオブジェクトをJSON形式でファイルに書き出すことができます。以下に、json.dumpメソッドを使用した例を示します。

import json
data = {'name': 'John', 'age': 30}

with open('data.json', 'w') as f:
json.dump(data, f)

この例では、dataというPythonオブジェクトをdata.jsonというファイルにJSON形式で書き出しています。ファイルを開く際に、'w'というモードを指定しているため、既存のファイルがある場合は上書きされます。

また、json.dumpメソッドは、JSON形式の文字列を標準出力に出力することもできます。以下に、標準出力にJSON形式で出力する例を示します。

import json
data = {'name': 'John', 'age': 30}
json.dump(data, sys.stdout)

この例では、sys.stdoutを渡すことで、JSON形式の文字列を標準出力に出力しています。sys.stdoutは、Pythonの標準出力ストリームを表すオブジェクトです。

REST

Pythonでは、多くのライブラリがREST APIとのやりとりを簡単にするために提供されています。ここでは、requestsというPythonライブラリを使用したREST APIの実例を示します。

まず、requestsライブラリをインストールします。

pip install requests

次に、APIエンドポイントにアクセスして情報を取得する例を示します。

import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.json())

この例では、requests.getメソッドを使用して、https://jsonplaceholder.typicode.com/posts/1というAPIエンドポイントにアクセスしています。APIから取得したJSON形式のレスポンスは、response.json()を使用してPythonオブジェクトに変換され、print文で出力されます。

また、POSTメソッドを使用してデータを送信する例を示します。

import requests
data = {'name': 'John', 'age': 30}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.json())

この例では、requests.postメソッドを使用して、https://jsonplaceholder.typicode.com/postsというAPIエンドポイントにJSON形式のデータを送信しています。json引数を使用して、dataというPythonオブジェクトをJSON形式に変換し、APIに送信しています。APIからのレスポンスは、response.json()を使用してPythonオブジェクトに変換され、print文で出力されます。

urlib.request

urllib.requestは、Pythonの標準ライブラリで、URLからデータをダウンロードするために使用されるモジュールです。このモジュールには、URLを開いてデータを読み取るためのクラスや関数が含まれています。

以下は、urllib.requestを使用してWebページを取得する例です。

import urllib.request

# URLを指定してWebページを取得する
response = urllib.request.urlopen('https://www.example.com')
# レスポンスの読み込み
html = response.read()

# HTMLの表示
print(html)

この例では、urllib.requestモジュールのurlopen関数を使用して、指定されたURLからWebページを取得しています。次に、取得したレスポンスをreadメソッドで読み込み、変数htmlに格納し、最後にprint関数を使用してWebページのHTMLを表示しています。

また、urllib.requestモジュールには、URLに対してHTTPリクエストを送信するためのより高度な機能が含まれています。例えば、HTTPヘッダーを設定したり、POSTリクエストを送信したり、Basic認証を使用したりすることができます。

以下は、HTTPヘッダーを設定したリクエストを送信する例です。

import urllib.request

url = 'https://www.example.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Accept-Language': 'en-US,en;q=0.5'}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
html = response.read()

print(html)

この例では、urllib.requestモジュールのRequestクラスを使用して、HTTPヘッダーを設定したリクエストを作成しています。その後、urlopen関数を使用して、指定されたリクエストを送信しています。

requests

requestsは、PythonのHTTPライブラリで、HTTPリクエストを送信し、HTTPレスポンスを受信することができます。このライブラリは、HTTPリクエストやレスポンスに必要なさまざまな機能を提供するため、広く使用されています。

以下は、requestsを使用してWebページを取得する例です。

import requests

# URLを指定してWebページを取得する
response = requests.get('https://www.example.com')
# レスポンスの読み込み
html = response.text

# HTMLの表示
print(html)

この例では、requestsライブラリのget関数に、headers引数を指定してHTTPヘッダーを設定しています。その後、get関数を使用して、指定されたリクエストを送信しています。

socket通信

socket通信は、ネットワークを介してコンピュータ同士がデータを送受信するための仕組みです。Pythonでは、socketライブラリを使用して、ソケット通信を実装することができます。

以下は、Pythonでクライアントとサーバー間でのソケット通信を行う例です。

サーバー側のコード

import socket

HOST = '127.0.0.1' # サーバーのIPアドレス
PORT = 12345 # ポート番号
# ソケットを作成する
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# ソケットをバインドする
s.bind((HOST, PORT))
# ソケットをリッスンする
s.listen()
# 接続を受け付ける
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
# データを受信する
data = conn.recv(1024)
if not data:
break
# 受信したデータを表示する
print('Received:', data.decode('utf-8'))
# 受信したデータを返信する
conn.sendall(data)

この例では、socketライブラリを使用して、サーバーを作成しています。まず、socket関数を使用して、IPv4とTCPを使用するソケットを作成しています。次に、bind関数を使用して、IPアドレスとポート番号を指定してソケットをバインドし、listen関数を使用して、接続を待ち受けるように設定しています。accept関数を使用して、クライアントからの接続を受け付け、接続されたソケットオブジェクトとアドレス情報を取得しています。その後、recv関数を使用して、受信したデータを読み込み、sendall関数を使用して、受信したデータを返信しています。

クライアント側のコード

import socket

HOST = '127.0.0.1' # サーバーのIPアドレス
PORT = 12345 # ポート番号
# ソケットを作成する
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# サーバーに接続する
s.connect((HOST, PORT))
# データを送信する
s.sendall(b'Hello, world')
# データを受信する
data = s.recv(1024)
print('Received:', data.decode('utf-8'))

この例では、socketライブラリを使用して、クライアントを作成しています。まず、socket関数を使用して、IPv4とTCPを使用するソケットを作成しています。

次に、connect関数を使用して、サーバーに接続し、sendall関数を使用して、サーバーにデータを送信しています。そして、recv関数を使用して、サーバーからの応答を受信しています。

以上が、Pythonでのソケット通信の例です。

このように、socketライブラリを使用することで、低レベルなネットワークプログラミングを行うことができます。ただし、Pythonにはrequestsやurllib.requestなどの高レベルなライブラリも用意されているため、必要に応じて適切なライブラリを選択する必要があります。

socketserverとhttp.serverとwebbrowser

socketserverhttp.server、およびwebbrowserはPythonの標準ライブラリで、Webアプリケーションの開発とデバッグに役立ちます。以下に、それぞれについて詳しく説明します。

socketserver

socketserverモジュールは、ネットワークサーバーの作成を簡単にするための高レベルなラッパーを提供します。このモジュールを使用すると、TCPまたはUDPソケットを使用してクライアントと通信できます。

以下は、socketserverを使用してTCPサーバーを作成する例です。

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
print("{} wrote:".format(self.client_address[0]))
print(self.data)
self.request.sendall(self.data.upper())
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
server.serve_forever()

この例では、socketserverモジュールを使用してTCPサーバーを作成しています。MyTCPHandlerクラスは、socketserver.BaseRequestHandlerクラスを継承しており、handleメソッドをオーバーライドして、クライアントからの要求を処理しています。クライアントからの要求を受け取ると、self.data変数にデータが格納され、データを大文字に変換してクライアントに送信します。

http.server

http.serverモジュールは、HTTPサーバーを簡単に作成できるようにするためのライブラリです。http.serverを使用すると、HTTPリクエストを処理するWebサーバーを作成できます。

以下は、http.serverを使用してWebサーバーを作成する例です。

import http.server
import socketserver

PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()

この例では、http.serverモジュールを使用してWebサーバーを作成しています。http.server.SimpleHTTPRequestHandlerクラスを使用して、HTTPリクエストを処理します。socketserver.TCPServerクラスを使用して、ポート8000でHTTPサーバーを作成し、httpd.serve_forever()メソッドを使用して、HTTPサーバーを実行しています。

webbrowser

webbrowserモジュールは、標準ブラウザを使用してWebページを開くことができるライブラリです。

以下は、webbrowserを使用してWebページを開く例です。

import webbrowser
webbrowser.open('http://www.example.com')

この例では、webbrowserモジュールを使用して、http://www.example.comというURLを持つWebページを開いています。webbrowser.open関数を使用することで、標準のWebブラウザでWebページを開くことができます。

以上が、socketserverhttp.server、およびwebbrowserモジュールについての説明と例です。これらのモジュールを組み合わせて使用することで、Webアプリケーションの開発とデバッグを効率的に行うことができます。

Flask

Flaskは、PythonでWebアプリケーションを開発するための軽量なWebフレームワークです。以下に、Flaskの特徴と具体例を示します。

Flaskの特徴

Flaskの特徴は、以下のとおりです。

  • 軽量なWebフレームワークであり、簡単に使いこなせます。
  • 拡張性が高く、必要な機能を簡単に追加できます。
  • Jinja2などのテンプレートエンジンを使用して、HTMLを生成することができます。
  • SQLAlchemyなどのORMライブラリと組み合わせることで、データベースの操作を簡単に行うことができます。
  • RESTful APIを作成することができます。

具体例

以下は、Flaskを使用してHello Worldアプリケーションを作成する例です。

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'

if __name__ == '__main__':
app.run()

この例では、Flaskクラスを使用してアプリケーションオブジェクトを作成しています。@app.routeデコレータを使用して、URLと関数をマッピングしています。hello関数は、'Hello, World!'という文字列を返します。app.runメソッドを呼び出すことで、アプリケーションを起動しています。

以下は、Flaskを使用してWebフォームを作成する例です。

from flask import Flask, render_template, request

app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/result', methods=['POST'])
def result():
name = request.form['name']
return render_template('result.html', name=name)
if __name__ == '__main__':
app.run()

この例では、Flaskクラスを使用してアプリケーションオブジェクトを作成しています。render_template関数を使用して、index.htmlresult.htmlというテンプレートをレンダリングしています。@app.routeデコレータを使用して、URLと関数をマッピングしています。index関数は、index.htmlをレンダリングします。result関数は、request.form['name']でフォームの値を取得して、result.htmlをレンダリングします。

以上が、Flaskの特徴と具体例です。Flaskを使用することで、Pythonで簡単にWebアプリケーションを開発することができます。

BeautifulSoupでWebスクレイピング

BeautifulSoupは、PythonでWebスクレイピングを行うためのライブラリです。以下に、BeautifulSoupの使い方と具体例を示します。

BeautifulSoupの使い方

BeautifulSoupは、HTMLやXMLのパースを行うことができます。以下のようにして、HTMLファイルを読み込み、BeautifulSoupオブジェクトを作成することができます。

from bs4 import BeautifulSoup

with open('example.html') as f:
    soup = BeautifulSoup(f, 'html.parser')

with open文でHTMLファイルを開き、BeautifulSoupクラスのインスタンスを作成しています。第二引数には、パーサーとしてhtml.parserを指定しています。

BeautifulSoupオブジェクトを作成すると、様々なメソッドを使ってHTMLファイルを解析できます。例えば、以下のようにして、タグ名を指定してタグの内容を取得することができます。

title = soup.title
print(title.string)

この例では、titleタグの中身を取得しています。

具体例

以下は、BeautifulSoupを使用してQiitaの人気記事のタイトルを取得する例です。

import requests
from bs4 import BeautifulSoup
url = 'https://qiita.com/'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
for item in soup.select('div.css-1ey1iea-Item'):
title = item.select_one('h2.css-1d8lls7-Title').text
print(title)

この例では、requestsライブラリを使用してQiitaのトップページのHTMLを取得し、BeautifulSoupクラスを使用してパースしています。soup.selectメソッドを使用して、記事の情報が含まれるdivタグを選択しています。item.select_oneメソッドを使用して、記事のタイトルを取得しています。

また、CSSセレクタを使用して、目的の要素を選択することができます。例えば、上記の例では、div.css-1ey1iea-ItemというCSSセレクタを使用して、記事の情報が含まれるdivタグを選択しています。

以上が、BeautifulSoupを使用したWebスクレイピングの例です。BeautifulSoupを使用することで、Pythonで簡単にWebスクレイピングを行うことができます。ただし、Webスクレイピングはサイトの利用規約に違反する場合があるため、注意が必要です。

PythonでBeautifulSoupを使う

BeautifulSoupは、Pythonのライブラリの一つで、WebページからHTMLやXMLをパースするために使われます。以下は、BeautifulSoupの使用例です。

from bs4 import BeautifulSoup
import requests
# 指定したURLからHTMLを取得
url = "https://www.example.com"
res = requests.get(url)
html = res.text
#BeautifulSoupオブジェクトを作成
soup = BeautifulSoup(html, "html.parser")

# HTMLタグを検索
title_tag = soup.find("title")
# タグからテキストを取得
title = title_tag.text

print("Title:", title)

この例では、指定したURLからHTMLを取得し、BeautifulSoupオブジェクトを作成します。その後、findメソッドを使って<title>タグを検索し、そのテキストを取得します。最後に、タイトルを出力します。

XML-RPC

XML-RPC(XML Remote Procedure Call)は、HTTPを介してXMLを使用してリモートメソッド出しを行うためのプロトコルです。以下に、XML-RPCの使い方と具体例を示します。

XML-RPCの使い方

XML-RPCを使用するためには、xmlrpc.clientモジュールを使用します。以下のようにして、サーバーに接続することができます。

import xmlrpc.client

server_url = 'http://localhost:8000'
server = xmlrpc.client.ServerProxy(server_url)

上記の例では、xmlrpc.client.ServerProxyクラスを使用して、http://localhost:8000のXML-RPCサーバーに接続しています。

次に、サーバーで定義されているメソッドを呼び出すことができます。例えば、以下のようにして、addというメソッドを呼び出すことができます。

result = server.add(1, 2)
print(result)

この例では、addというメソッドを呼び出して、引数として12を渡しています。XML-RPCサーバーは、addメソッドを実行して、結果を返します。返された結果は、result変数に格納され、表示されます。

具体例

以下は、XML-RPCサーバーを実装し、クライアントからメソッドを呼び出す例です。

from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler

class MyHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
def add(x, y):
return x + y

def subtract(x, y):
return x - y
server = SimpleXMLRPCServer(('localhost', 8000),
requestHandler=MyHandler)
server.register_function(add, 'add')
server.register_function(subtract, 'subtract')

server.serve_forever()

この例では、xmlrpc.serverモジュールを使用して、XML-RPCサーバーを実装しています。SimpleXMLRPCServerクラスを使用して、サーバーを作成し、register_functionメソッドを使用して、addsubtractというメソッドを登録しています。

サーバーを起動すると、クライアントからメソッドを呼び出すことができます。以下は、クライアントからメソッドを呼び出す例です。

import xmlrpc.client

server_url = 'http://localhost:8000'
server = xmlrpc.client.ServerProxy(server_url)
result = server.add(1, 2)
print(result)

result = server.subtract(3, 2)
print(result)

この例では、xmlrpc.client.ServerProxyクラスを使用して、サーバーに接続しています。

※現状はRESTの方が好まれている現状があります。

networkx

NetworkXは、Pythonで作成されたグラフ理論のためのライブラリです。以下に、NetworkXの基本的な使い方と具体例を示します。

NetworkXの使い方

NetworkXを使用するには、まずnetworkxモジュールをインポートします。以下のように、Graphクラスを使用してグラフを作成することができます。

import networkx as nx
# 空のグラフを作成する
G = nx.Graph()

# ノードを追加する
G.add_node(1)
# エッジを追加する
G.add_edge(1, 2)

# ノードとエッジを表示する
print(G.nodes())
print(G.edges())

この例では、nx.Graph()を使用して空のグラフを作成し、add_nodeメソッドとadd_edgeメソッドを使用して、ノードとエッジを追加しています。最後に、nodes()メソッドとedges()メソッドを使用して、ノードとエッジを表示しています。

具体例

以下は、NetworkXを使用してグラフを作成し、可視化する例です。

import networkx as nx
import matplotlib.pyplot as plt
# グラフを作成する
G = nx.Graph()
# ノードを追加する
G.add_node('A')
G.add_node('B')
G.add_node('C')
G.add_node('D')
# エッジを追加する
G.add_edge('A', 'B')
G.add_edge('B', 'C')
G.add_edge('C', 'D')
G.add_edge('D', 'A')
# グラフを可視化する
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()

この例では、nx.Graph()を使用してグラフを作成し、add_nodeメソッドとadd_edgeメソッドを使用して、ノードとエッジを追加しています。最後に、spring_layoutメソッドを使用して、ノードの配置を計算し、drawメソッドを使用してグラフを可視化しています。

以上のように、NetworkXを使用することで、グラフの作成や解析、可視化を簡単に行うことができます。また、さまざまなアルゴリズムやデータ構造をサポートしているため、グラフ理論において広く用いられています。


というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。

コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。

それでは、以上です。

最新情報をチェックしよう!