こんにちはヤク学長です。
データサイエンティスト兼ファーマシストで、アルゴリズムや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
socketserver
、http.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ページを開くことができます。
以上が、socketserver
、http.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.html
とresult.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
というメソッドを呼び出して、引数として1
と2
を渡しています。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
メソッドを使用して、add
とsubtract
というメソッドを登録しています。
サーバーを起動すると、クライアントからメソッドを呼び出すことができます。以下は、クライアントからメソッドを呼び出す例です。
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を使用することで、グラフの作成や解析、可視化を簡単に行うことができます。また、さまざまなアルゴリズムやデータ構造をサポートしているため、グラフ理論において広く用いられています。
というわけで、今回は以上です。大変大変お疲れ様でした。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。