【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ

目次
ウマたん当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例とあわせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。
こんにちは!
事業会社でのデータサイエンティストを経て現在は会社経営をしているウマたん(@statistics1012)です。
今では毎日何時間もPythonを触ってる僕ですが、Pythonを勉強しようとして結局投げ出してしまった過去もあります。
プログラミング学習って特に初心者は学び方を間違えるとなかなか続かず挫折してしまうんですよね・・・
この記事では、そんな僕が圧倒的にオススメするPythonの勉強ロードマップやオススメサービス・教材を徹底的に解説していきます!
数あるサービスを使ってきましたが、Python学習におすすめできるサービスはこちら!ドドン!
| サービス名 | オススメ度 | 価格の安さ | サポート体制 | どんな人におすすめ? | 公式サイト |
|---|---|---|---|---|---|
| テックアカデミー | パーソナルメンターが欲しい | テックアカデミー | |||
| PyQ | 環境構築せずとりあえずPythonを触ってみたい | PyQ |
ウマたんこれであなたもPythonをマスター!!
この記事で取り上げているのは以下の3つです。
この記事で紹介している初心者勉強のロードマップを参考に進めてみてください!
紹介しているコードを参考に、カスタマイズした機械学習ロジックを用いたWebアプリケーションを作っていただけると学習がはかどるかと思います。
ロボたんWebアプリケーション作成まで出来るのか・・・
ウマたんデータ分析だけの言語だと思ったら大間違い!実際にPythonを習得しやすいお題に対してコーディングしていくよ!
ちなみにデータ分析の文脈においてはSignateやKaggle、僕が開設したDataDojoなどのデータコンペを使ってガシガシ学んでいくことをオススメします。
また僕の経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営しておりますので興味のある方は是非チェックしてみてください!
Pythonの特徴

まずは簡単にPythonのイメージについて見ていきましょう!
ちなみにPythonの勉強法については以下の動画でも解説していますので、あわせてチェックしてみてください!
Pythonはどうしてもデータ解析のイメージが強いです。
もちろんお馴染みの機械学習手法から流行りの手法まで幅広く実装することができますが、それであればRでも問題ありません。
現に大学院時代はRで困ったことはありませんでした(Rはグラフ描画や多変量解析手法に強いイメージがあります)。
以下の記事でPythonとRなどデータ解析用のプログラミング言語を比較しているのでよければご覧ください!
統計解析を行う上で便利なプログラミング言語を比較!当サイト【スタビジ】の本記事では、統計解析において便利なプログラミング言語「Python/R/Stan/SQL」を比較していきます。それぞれのプログラミング言語にどのような特徴があるのか、どのように勉強していけばよいのか見てきますよー!
Pythonの真骨頂は、Webアプリケーション開発。
FlaskやDjangoと言ったモジュールを用いることで簡単にWebアプリケーションを開発することができるのです。
【違いは?】Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!
つまりクライアントサイドからデータをもらい、そのデータに対してロジックを回し、クライアントサイドに返すといったことを一気通貫で出来てしまうのです!
それでいて変数宣言等が必要なく、簡易的なコーディングで実装できる初心者にも優しい言語なのです!
ロボたんなんだその最強の言語は・・・
ウマたん出来ることの幅の広さと分かりやすい記述方法で非常に人気なんだよー!
Pythonでできることはまだまだたくさんあります!以下の記事で解説しているので是非チェックしてみてください!
【初心者向け】Pythonでできること7選!サンプルコードをまじえて解説!当サイト【スタビジ】本記事では、Pythonでできることを7つまとめていきます!!Pythonで何ができるのか分からない状況から深い理解にもっていきますよー!実際にPythonでの実装例や勉強方法も取り上げているのでぜひご自分の環境で手を動かして実装してみてくださいね!
初心者がPythonで勉強すべき基礎・応用

Pythonで出来ることはたくさんあるのですが、その分初心者にとっては何から手を付けようか迷うかと思います。
そのため、まずは自分がPythonを使って何をしたいか明確にしておくと良いです。
もし詳しくPythonで出来ることに具体的なイメージをつかみたい!という方は手前味噌ですが以下の僕の書籍で小説形式で分かりやすく解説していますので是非チェックしてみてください!
ストーリー形式でPythonを使ってどんなことができるかまとめていますので、最初にこの本に目を通していただけると学習がスムーズに進むかと思います。
価格は300円ちょっとですし、Kindle unlimitedであれば無料で読めるのでぜひチェックしてみてくださいね!
概要を掴んだ後、実際に手を動かすパートでは、僕自身が講師を務めている以下の講座で色んな出来ることを実装しているのでよければ見てみてください。
この記事ではPythonを勉強する中でこれだけはおさえておきたい内容を基礎編と応用編に分けてまとめていきます!

勉強のスケジュールは以下を目安にすることをおすすめします。
最初の1ヶ月でPythonの基礎を学んで、その後Pythonで出来ることを一つずつ習得していきましょう!
【基礎編】勉強すべき基本要素
ここでは何を作るにしろ共通して習得しておいた方が良い基礎要素をまとめていきます。
Pythonでの基本的な記述方法が分かる

まあこれは、他の言語をある程度触ったことのある人ならそれほど苦労しない部分かもしれません。
ただ若干記述の方法が違ったり、Python独自の概念もあるのでしっかりと学びましょう!
NumpyやPandas、Matplotlibなどデータ加工や描画に関するモジュールの使い方を覚えましょう!
理論を学ぶのは書籍をオススメしているのですが、Pythonの勉強には書籍はおすすめしません。
基礎文法の習得にはPyQというオンライン学習サービスを利用しましょう!
【体験談】PyQの評判は?3か月本気でPythonを勉強してみたので徹底レビュー!PyQはPythonを学ぶ上で非常にオススメで評判の高いサービスです。ただ、他のサービスとの違いが分かりにくいのも事実。そこで当サイト【スタビジ】では、実際にPyQを3か月体験した僕がPyQのメリット・デメリット・評判について徹底的にレビューしていきます!
基本的な文法から勉強することができPythonに特化しているのでクオリティが高い!価格は3000円/月なので書籍1冊ほどのお値段です!
なかなかPythonに特化してここまで教えてくれるオンライン学習プラットフォームはありません。
クエスト形式で進んでいくので達成感もありますし価格も安め!
ただ、実際に開発環境を作るのではなくPyQが用意してくれたプラットフォームを使うのでPyQだけやっても実務で回すときはまた違う設定が必要になります。

実際に自分でJupyter notebookを立ち上げたりコマンドプロンプトから入力して実装してみることを忘れないでください。
関数・クラスが作れる

関数・クラスの概念も他のプログラミング言語触ったことのある人なら問題ないかもしれませんが、初心者には非常に取っつきにくいところです。
一旦理解してしまえばそれほど難しくはありません。後ほど紹介する書籍に分かりやすく書いてあります。
昔、Javaのオブジェクト指向でつまづいてプログラミング投げ出した記憶があります笑
ここのフェイズでもPyQで学習してきましょう!
チームで開発する上でのクラスや関数・モジュールの扱い方に関してここまで詳しく解説している教材は見たことないです。
データ解析では関数・クラスは一見いらなそうですが、オートメーションに組み込む際などは必要になってきます。
【応用編】Pythonで出来ること
ここまでは、基本的にPythonを使用する上で誰しもある程度必要になる基礎要素をお伝えしてきました。
ここからは、自分がPythonを使ってやりたいことを明確にしてどれかつまみ食い的に勉強して大丈夫な領域です。
まあ色々出来た方がPythonを使用する意味は高まるのでなるべく色々できるようになることをオススメします。
ロボたん出来ることの幅が広くてどのように勉強すればよいか迷っちゃいそうだなー・・・
ウマたん出来ることを実際に見ていくから参考にしてぜひ自分の目指す姿を明確にしてね!
データ解析が出来る(機械学習ライブラリが使いこなせる)

データ解析を行う上でのライブラリは比較的たくさんありますので、それが使いこなせるようになっておきましょう!
手前味噌ですが、データ解析に関しては僕自身が作っているUdemyコースがオススメです!
このコースは、なかなか勉強する時間がないという方に向けてコンパクトに分かりやすく必要最低限の時間で重要なエッセンスを学び取れるように作成しています。
アニメーションを使った概要編とハンズオン形式で進む実践編に分かれており、概要編ではYoutubeの内容をより体系的にデータ分析・機械学習導入の文脈でまとめています。
実践編で題材にした中古マンション価格予測のコンペはもともとNishikaで開催されていたもので、Nishikaは2026年3月にサービスを終了しましたが、今はDataDojoの「中古マンション価格予測チャレンジ」で同じコンペに参加でき、データのダウンロードもできます。予測結果のCSVを提出すると自動でスコアが付くので、講座とあわせて挑戦してみてください!
正直、Pythonは最新の手法であれライブラリとしてインポートし使用することができるのでアルゴリズムを精緻に理解する必要はありません。
しかし、まるっきり分からないと結果の解釈を誤ってしまう可能性があるのである程度の理解はしておくべき。
統計学や機械学習に関して不安な方はそちらも学んでおきましょう!
【初心者必見】統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!
【5分で分かる】機械学習の独学勉強ロードマップを徹底的にまとめていく!当サイト【スタビジ】の本記事では、機械学習の独学勉強ロードマップについて徹底的にまとめていきます。機械学習をいきなり理論からしっかり勉強しようとすると挫折しかねません。そこで、この記事ではなるべく挫折しないロードマップをお伝えしてきますよ!
また、さらに深くディープラーニング等を学びたいのであれば、テックアカデミーのAIコースがオススメです。
テックアカデミーは、なかなかモチベーションが保てない人におすすめ!
パーソナルメンターが寄り添ってくれるので挫折せず学習を進めやすいです。
体験記事を挙げているので参考にしてみてください!
【体験談】テックアカデミー評判は?3か月本気受講してみたので徹底レビュー!当ブログ【スタビジ】では、様々なプログラミングスクールの中からテックアカデミーのメリット・デメリット・評判について3か月の体験談をもとに赤裸々にレビューしていきます。
ディープラーニングの勉強方法については以下の記事でも詳しくまとめています!
【初心者向け】ディープラーニングの勉強ロードマップまとめ!当サイト【スタビジ】本記事では、ディープラーニングの学習方法について詳しくまとめていきます!ディープラーニングは難しいと思われがちですが、アルゴリズムは意外とシンプルで実装自体も非常に簡単なんです!Pythonでの実装もおこなっていきますよー!
スクレイピングが出来る

スクレイピングとは、Web上のデータを抽出する作業。
スクレイピングに関してはUdemyの以下の講座がおすすめ!
スクレイピングを自動的に行えばネットに落ちている様々な情報を一挙に吸い上げることが可能です。
ウマたんスクレイピングが出来ると幅が広がるから是非マスターして欲しい!
スクレイピングをする上では、インターネットの構造とHTMLやCSSの理解が必要になります。
正直HTML・CSSを0から書ける必要はありません。
クロームのディベロッパーツールを使ってWebブラウザを見ながら構造を勉強するとよいでしょう!
マーケター必読!ディベロッパーツールの使い方!こんにちは! 消費財メーカーでデジタルマーケティングに携わるウマたん(@statistics1012)です。 みなさんは
またスクレイピングすることができるレベルのHTML・CSS・Javascriptを学ぶ本として以下の書籍が超超超名著なので読んでみてください。
Kindle版しかないみたい。
「WEBマーケターのためのテクノロジー入門:Webマーケターにとって必要十分なプログラミング・テクノロジーの基礎を解説」
「WEBマーケターのためのテクノロジー入門」はWebマーケター必読書だ!こんにちは! 消費財メーカーでデジタルマーケターやってるウマたん(@statistics1012)です! 大学院では統計
APIを利用できる

世の中にはたくさんのサービスが提供してくれているAPIが存在します。
APIを利用することで自分で0から作り込まなくても様々なことができるんです!
APIをPythonで利用する方法については以下の記事で詳しく解説していますので是非チェックしてみてください!
【5分で分かる】Pythonを使って様々なサービスのAPIを利用してみよう!当サイト【スタビジ】の本記事では、Pythonを使ってSlackやGoogleのAPIを利用していきます!APIを利用することで非常に様々なことができるので是非試してみましょう!APIを使えるようになると幅が広がりますよ!
データベースを操作できる

Sqlite3というライブラリを使用すればSQLと同様なカタチでデータベース操作を行うことができます。
もちろんSQLの記法が分かっていないといけないので以下の記事も参考にしてみてください。
SQLを最速でマスターできる勉強方法とオススメ本・サイト当サイト【スタビジ】の本記事では、SQLを勉強するのにオススメな本と勉強法についてまとめていきます!SQLはデータサイエンスの基本であり必ずマスターしておかなくてはいけない言語です。早い段階から手を動かすことで理解が深まりますよー!
Webアプリケーションを開発できる

ここがPythonの特徴でもあるのですが、今までサーバーサイド言語を扱ったことのない人にはハードルの高い部分かもしれません。
僕もサーバーサイド言語はノータッチでした。
実際にWebアプリケーションとして落とし込むにはHTML・CSS・Javascriptの知識も必要になってくるので同時に学習しましょう!
PythonでWebアプリケーションを開発するなら以下のUdemy講座がオススメ!
Flaskは軽量で簡易的なWebアプリケーションを開発するのにオススメですが、本格的なWebアプリケーションを実装するのであればDjangoがオススメです。
Djangoの学習におすすめのサイトと勉強を進める上での注意点本記事では、PythonのDjango(ジャンゴ)というWebアプリケーションを作成するフレームワークを学習する方法をまとめていきます!Djangoは簡単にWebアプリケーションを作成できるフレームワークなのですが、なかなか学習するのに苦…
FlaskとDjangoの違いは以下の記事でまとめています!
【違いは?】Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!
また、PythonでのWebアプリケーション開発について詳しくは以下の記事でまとめていますよー!
【入門初心者向け】PythonでWebアプリを作ってみた!開発方法徹底解説!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークを用いてWebアプリを開発していく方法を徹底解説していきます。実際にDjangoでの実装とFlaskでの実装をおこなっていったあと、勉強法についても見ていきましょう!
初心者がPythonを習得するための勉強課題

先ほどのPython習得におけるいくつかの要素。
それらを同時に習得できるプログラムを作っていきましょう!笑
僭越ながら、少し前までPython初心者だった僕でもこんなの作れるんだぞ!という証明も含めて解説していきます。
ウマたんそんなのあるのか!?
正直無理やり感ありますが・・・
今回作っていくのは、
です。

URLを入れると・・・・

類似度が算出されます!
まさにこれを作れば、先ほどの様々な応用要素が習得でき・・・そう・・・?
ガツンとコードだけ先に載せちゃいます。
PythonファイルとHTMLファイルを作成していきます。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#ライブラリーインポート
import requests
from bs4 import BeautifulSoup
import sys
import MeCab
from time import sleep
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
import sqlite3
from flask import Flask, redirect ,request,render_template,jsonify
from flask_bootstrap import Bootstrap
import json
#スクレイピングして文書加工
class Scr():
def __init__(self, urls):
self.urls=urls
#スクレイピング
def geturl(self):
all_text=[]
for url in self.urls:
r=requests.get(url)
c=r.content
soup=BeautifulSoup(c,"html.parser")
article1_content=soup.find_all("p")
temp=[]
for con in article1_content:
out=con.text
temp.append(out)
text=''.join(temp)
all_text.append(text)
sleep(1)
return all_text
#メカブで形態素解析
def mplg(article):
word_list = ""
m=MeCab.Tagger()
m1=m.parse(article)
for row in m1.split("\n"):
word =row.split("\t")[0]#タブ区切りになっている1つ目を取り出す。ここには形態素が格納されている
if word == "EOS":
break
else:
pos = row.split("\t")[1]#タブ区切りになっている2つ目を取り出す。ここには品詞が格納されている
slice = pos[:2]
if slice == "名詞":
word_list = word_list +" "+ word
return word_list
#文書類似度計算
class CalCos():
def __init__(self,word_list):
self.word=word_list
#tf-idf&cos類似度で文書類似度算出
def tfidf(self):
docs = np.array(self.word)#Numpyの配列に変換する
#単語を配列ベクトル化して、TF-IDFを計算する
vecs = TfidfVectorizer(
token_pattern=u'(?u)\\b\\w+\\b'#文字列長が 1 の単語を処理対象に含めることを意味します。
).fit_transform(docs)
vecs = vecs.toarray()
return vecs
def cossim(self,v1,v2):
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
#データベースアクセス
class Db():
def __init__(self,dbname):
self.db=dbname
def db_input(self,article):
#値をデータベースに格納
conn=sqlite3.connect(self.db)
c = conn.cursor()
# executeメソッドでSQL文を実行する
create_table = '''DROP TABLE IF EXISTS article_match;
create table article_match (text_1 verchar,text_2 verchar,match_rate double)'''
c.executescript(create_table)
# SQL文に値をセットする場合は,Pythonのformatメソッドなどは使わずに,
# セットしたい場所に?を記述し,executeメソッドの第2引数に?に当てはめる値を
# タプルで渡す.
sql = 'insert into article_match (text_1, text_2, match_rate) values (?,?,?)'
c.execute(sql, article)
conn.commit()
c.close()
conn.close()
def db_output(self):
#データベースから値を抽出
conn=sqlite3.connect(self.db)
c = conn.cursor()
select_sql = 'select * from article_match'
c.execute(select_sql)
match_rate=c.fetchone()
conn.commit()
c.close()
conn.close()
return match_rate
#こっから実装
nc = Flask(__name__)
bootstrap = Bootstrap(nc)
@nc.route("/")
def check():
return render_template('sr_all.html')
@nc.route('/output', methods=['POST'])
def output():
#json形式でURLを受け取る
url1 = request.json['url1']
url2 = request.json['url2']
word_list=[]
url=[url1,url2]
sc=Scr(url)
texts=sc.geturl()
for text in texts:
word_list.append(mplg(text))
wl=CalCos(word_list)
vecs=wl.tfidf()
match_rate=wl.cossim(vecs[1],vecs[0])
#DB格納
article = (url[0], url[1], match_rate)
dbname = 'article.db'
db=Db(dbname)
db.db_input(article)
match_rate=db.db_output()
return_data = {"result":round(match_rate[2]*100,1)}
return jsonify(ResultSet=json.dumps(return_data))
@nc.route('/output2', methods=['POST'])
def output2():
#json形式でURLを受け取る
text1 = request.json['text1']
text2 = request.json['text2']
word_list=[]
texts=[text1,text2]
for text in texts:
word_list.append(mplg(text))
wl=CalCos(word_list)
vecs=wl.tfidf()
match_rate=wl.cossim(vecs[1],vecs[0])
#DB格納
article = (texts[0], texts[1], match_rate)
dbname = 'article.db'
db=Db(dbname)
db.db_input(article)
match_rate=db.db_output()
return_data = {"result":round(match_rate[2]*100,1)}
return jsonify(ResultSet=json.dumps(return_data))
if __name__ == '__main__':
nc.run(host="127.0.0.1", port=8080)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テキスト分析</title>
<!-- <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" /> -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>
<br>テキスト分析</h1>
<h2 class="text-info">
</br>1.urlから抽出</h2>
<div class="form-group">
<label>URL1</label>
<div class="row">
<div class="col-md-6">
<input class="form-control" type="text" id="url1" name="url1" placeholder="URL1" required/>
</div>
</div>
</div>
<div class="form-group">
<label>URL2</label>
<div class="row">
<div class="col-md-6">
<input class="form-control" type="text" id="url2" name="url2" placeholder="URL2" required/>
</div>
</div>
</div>
<button class="btn btn-info" id="button1">類似度を算出</button>
<div></div>
<font color='696969' size=5><div id="match1" >類似度は</div></font>
</br>
<hr color='696969' size="9">
<h2 class="text-info">
</br>2.テキストをそのまま入力</h2>
<div class="form-group">
<label>text1</label>
<div class="row">
<div class="col-md-6">
<textarea class="form-control" type="text1" id="text1" name="text1" placeholder="テキストを貼り付けてください" required></textarea>
</div>
</div>
</div>
<div class="form-group">
<label>text2</label>
<div class="row">
<div class="col-md-6">
<textarea class="form-control" type="text2" id="text2" name="text2" placeholder="テキストを貼り付けてください" required/></textarea>
</div>
</div>
</div>
<button class="btn btn-info" id="button2">類似度を算出</button>
<div></div>
<font color='696969' size=5><div id="match2" >類似度は</div></font>
<div class="hide" id="loading"></div>
</div>
<!-- CSS -->
<style type="text/css">
/* 隠すためのやつ */
.hide {
display: none;
}
/* ローディングGIF */
#loading {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,.5);
background-image: url(../static/images/325-88.gif);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center center;
background-size: 50px 50px;
}
</style>
<!-- Javascript -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<!-- temp -->
<script type="text/javascript">
$(function(){
$("#button1").on("click", function(){
var textData = JSON.stringify({"url1":$("#url1").val(),"url2":$("#url2").val()});
$.ajax({
type:'POST',
url:'/output',
data:textData,
contentType:'application/json',
//リクエストが完了するまで実行される
beforeSend: function(){
$('#loading').removeClass('hide');
},
// 非同期通信が成功したら実行される
success:function(data){
$('#loading').addClass('hide');
var result = JSON.parse(data.ResultSet).result;
$("#match1").text("類似度は"+result+"%です");
}
});
});
$("#button2").on("click", function(){
var textData = JSON.stringify({"text1":$("#text1").val(),"text2":$("#text2").val()});
$.ajax({
type:'POST',
url:'/output2',
data:textData,
contentType:'application/json',
//リクエストが完了するまで実行される
beforeSend: function(){
$('#loading').removeClass('hide');
},
// 非同期通信が成功したら実行される
success:function(data){
$('#loading').addClass('hide');
var result = JSON.parse(data.ResultSet).result;
$("#match2").text("類似度は"+result+"%です");
}
});
});
});
</script>
<!-- temp -->
</body>
</html>
ロボたんな、何が何だか、、、
いきなり長ったらしいコードが現れましたが安心してください。
順番に見ていきましょう!
Pythonのスクレイピングを習得
まずは、Pythonでスクレイピングを習得していきます。
スクレイピングを行うにはbeautifulSoupというモジュールを使います。
Pythonにおけるスクレイピングに関して詳細は以下の記事をご覧ください!
【初心者向け】PythonのBeautiful Soupでスクレイピングを実装してみよう!当サイト【スタビジ】の本記事では、初心者向けにPythonでスクレイピングを行う上での注意点や実装方法そして勉強方法についてまとめていきます!スクレイピングは比較的カンタンに実装できますが、奥が深く他の知識と組み合わせることで高いシナジーが見込める分野です。
スクレイピングの部分だけ抜き出して見ていきます!
#スクレイピングして文書加工
class Scr():
def __init__(self, urls):
self.urls=urls
#スクレイピング
def geturl(self):
all_text=[]
for url in self.urls:
r=requests.get(url)
c=r.content
soup=BeautifulSoup(c,"html.parser")
article1_content=soup.find_all("p")
temp=[]
for con in article1_content:
out=con.text
temp.append(out)
text=''.join(temp)
all_text.append(text)
sleep(1)
return all_text
スクレイピング用のクラスを作成しています。
article1_content=soup.find_all(“p”)でpタグを指定して抽出しています。
ここを変えれば別のタグの中身を抽出することが可能です。
Pythonで形態素解析をしてテキスト類似度計算
続いて、MeCabを使って形態素解析を行い、td-idfとcos類似度を用いてテキスト類似度を算出していきます。
MeCabをPythonで使うには少し設定が必要だったりするのですが、詳しくはこちらの記事をご覧ください。
Pythonで文書類似度算出!MeCabで形態素解析後にTf-idfとCos類似度を使ってみよう当サイト【スタビジ】の本記事では、形態素解析器であるMeCabとPythonを用いて形態素解析を行いその後Tf-idfとCos類似度を使い最終的に文章の類似度を算出していきます。また、文章の著者が誰なのかをMeCabとLight gbmを用いて予測していきます。非常に簡単に実装できるかつ応用度が高いです!自然言語処理の世界に入るきっかけにしてくださいね!
形態素解析・テキスト類似度の部分だけ抜き出して見ていきます!
#メカブで形態素解析
def mplg(article):
word_list = ""
m=MeCab.Tagger()
m1=m.parse(article)
for row in m1.split("n"):
word =row.split("t")[0]#タブ区切りになっている1つ目を取り出す。ここには形態素が格納されている
if word == "EOS":
break
else:
pos = row.split("t")[1]#タブ区切りになっている2つ目を取り出す。ここには品詞が格納されている
slice = pos[:2]
if slice == "名詞":
word_list = word_list +" "+ word
return word_list
#文書類似度計算
class CalCos():
def __init__(self,word_list):
self.word=word_list
#tf-idf&cos類似度で文書類似度算出
def tfidf(self):
docs = np.array(self.word)#Numpyの配列に変換する
#単語を配列ベクトル化して、TF-IDFを計算する
vecs = TfidfVectorizer(
token_pattern=u'(?u)bw+b'#文字列長が 1 の単語を処理対象に含めることを意味します。
).fit_transform(docs)
vecs = vecs.toarray()
return vecs
def cossim(self,v1,v2):
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
ここでもそれらのクラスを作成しています。
形態素解析をして得られた結果から名詞だけを抜き出して、助詞等を除いています。
td-idfとcos類似度はnumpyとscikit-learnを用いれば簡易的に計算することが可能です。
Pythonでデータベースを操作する
続いてはPythonを使ってデータベースを操作していきます。
詳しくは以下の記事にまとめていますのでご覧ください!
【DB作成】PythonのSqlite3を使ってデータベースを操作する方法を見ていこう!当サイト【スタビジ】の本記事では、PythonのSqlite3を使ってデータベース操作をおこなっていきます。PythonでSQL扱えると便利!もちろんPythonだけでなくSQLの知識も必要になるので注意してくださいねー!
データベース操作部分だけ抜き出して見ていきます!
class Db():
def __init__(self,dbname):
self.db=dbname
def db_input(self,article):
#値をデータベースに格納
conn=sqlite3.connect(self.db)
c = conn.cursor()
# executeメソッドでSQL文を実行する
create_table = '''DROP TABLE IF EXISTS article_match;
create table article_match (text_1 verchar,text_2 verchar,match_rate double)'''
c.executescript(create_table)
# SQL文に値をセットする場合は,Pythonのformatメソッドなどは使わずに,
# セットしたい場所に?を記述し,executeメソッドの第2引数に?に当てはめる値を
# タプルで渡す.
sql = 'insert into article_match (text_1, text_2, match_rate) values (?,?,?)'
c.execute(sql, article)
conn.commit()
c.close()
conn.close()
def db_output(self):
#データベースから値を抽出
conn=sqlite3.connect(self.db)
c = conn.cursor()
select_sql = 'select * from article_match'
c.execute(select_sql)
match_rate=c.fetchone()
conn.commit()
c.close()
conn.close()
return match_rate
細かい処理が必要なのですが、基本的にはsqlite3.connect()でデータベースを作成し、executeメソッドでSQLを実行していきます。
PythonでWebアプリケーションを作成
ここの部分が一番重いですね。HTMLも作成するのでPython以外の知識もある程度必要になってきます。
こちらの記事をはじめに読んでいただくと理解が進みやすいと思います。
有意差を算出してくれるWebアプリケーションを作成しています。
Flaskでできることを確認しながら簡単なWebアプリを作ってみよう!当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!
今回のプログラムで特別行っているところはローディング時にローディングのgif画像を差し込むという処理です。
/* ローディングGIF */
#loading {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,.5);
background-image: url(../static/images/325-88.gif);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center center;
background-size: 50px 50px;
}
$.ajax({
type:'POST',
url:'/output',
data:textData,
contentType:'application/json',
//リクエストが完了するまで実行される
beforeSend: function(){
$('#loading').removeClass('hide');
},
// 非同期通信が成功したら実行される
success:function(data){
$('#loading').addClass('hide');
var result = JSON.parse(data.ResultSet).result;
$("#match1").text("類似度は"+result+"%です");
}
});
これがあるとユーザーにとっては計算中なんだなということが分かり親切ですが、あってもなくても構いません。
nc = Flask(__name__)
bootstrap = Bootstrap(nc)
@nc.route("/")
def check():
return render_template('sr_all.html')
@nc.route('/output', methods=['POST'])
def output():
#json形式でURLを受け取る
url1 = request.json['url1']
url2 = request.json['url2']
word_list=[]
url=[url1,url2]
sc=Scr(url)
texts=sc.geturl()
for text in texts:
word_list.append(mplg(text))
wl=CalCos(word_list)
vecs=wl.tfidf()
match_rate=wl.cossim(vecs[1],vecs[0])
#DB格納
article = (url[0], url[1], match_rate)
dbname = 'article.db'
db=Db(dbname)
db.db_input(article)
match_rate=db.db_output()
return_data = {"result":round(match_rate[2]*100,1)}
return jsonify(ResultSet=json.dumps(return_data))
Flaskを使ってWebアプリケーションを作成する部分は少し複雑ですが、こういうもんだと思って覚えるしかありません。
HTMLとの整合性が合うように命名等気を付けましょう!
これで終了!
Flaskを使う場合はpythonファイルと同じディレクトリにtemplatesフォルダを作成し、その中にhtmlファイルを置かないといけないので注意しましょう!
画像ファイルはimgフォルダ、css・jsはstaticフォルダと決まっています。
ちなみに今回はURLでもテキストでもどちらを入力しても判定できるようなUIにしました。
おまけですが、最後に作ったWebアプリケーションをHerokuというサービスでデプロイするステップを記事にしています!
Herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法と注意点!当サイト【スタビジ】の本記事では、PythonのWebフレームワークであるFlaskを使って作成したWebアプリケーションをインターネット上に公開するためにHerokuというサービスを使ってデプロイしていきます。Herokuを使えば簡単にWebアプリケーションを公開することが可能なんです。
Webアプリケーションを作ったら色んな人に見てもらいたいですよね!
そんな時はぜひHerokuを使ってみてください!
このスクリプトをまねて何かWebアプリケーションを勉強がてら作ってみてくださいねー!
ウマたんこれが出来ればPythonの勉強は一通り出来たことになるよ!
Python勉強におすすめのサービス
最後にこれらのPython勉強を進めるおすすめサイト・サービスを紹介していきます。
ある程度、本で学ぶこともできますが正直しっかり学ぶならサービスを利用した方が効率が良いです。
何回か登場しているサービスもありますが、最後にまとめておきましょう!
| サービス名 | オススメ度 | 価格の安さ | サポート体制 | どんな人におすすめ? | 公式サイト |
|---|---|---|---|---|---|
| テックアカデミー | パーソナルメンターが欲しい | テックアカデミー | |||
| Udemy | 特定の領域を深堀りして独学で学習したい | Udemy | |||
| PyQ | 環境構築せずとりあえずPythonを触ってみたい | PyQ | |||
| スタアカ | データサイエンスをガッツリ学ぶなら | スタアカ |
PyQ
公式サイト:https://pyq.jp
| 【価格】 | 3040円/月~ |
|---|---|
| 【オススメ度】 |
PyQはPythonに特化したサービスです。
完全オンライン学習サービスで、定額制で全ての講座を受講することができます。
実際に手を動かすことをかなり重視しているので、楽しくモチベーションを保ちながら進めることが可能です。
インターフェイスが使いやすくてサクサク進められます。

プランはプロに質問ができて過去の質問も閲覧できるスタンダードプランと講座の受講だけできるライトプランがあります。
不安ならスタンダードプランをオススメしますが、ライトプランでも問題なく進められます。
Pythonの勉強してる時いろんな書籍とかProgateとか試したけど、PyQが一番よかったなぁと思う。料金もそんなに高くないし。最短で学びたいならPyQがオススメ
— yukisuzu (@yukisuzu66) January 11, 2020
正直Pythonを素早く身に付けて実装してみたい!かつお金も安く済ませたい!ならPyQ一択です。
ただ完全自力なので、モチベーションが続かないと厳しいです。
以下の記事でPyQの体験を基に詳しくレビューしています。
【体験談】PyQの評判は?3か月本気でPythonを勉強してみたので徹底レビュー!PyQはPythonを学ぶ上で非常にオススメで評判の高いサービスです。ただ、他のサービスとの違いが分かりにくいのも事実。そこで当サイト【スタビジ】では、実際にPyQを3か月体験した僕がPyQのメリット・デメリット・評判について徹底的にレビューしていきます!
Udemy
公式サイト:https://www.udemy.com/
| 【価格】 | 1200円~(コース売り切り型) |
|---|---|
| 【オススメ度】 |
Udemyは様々な専門知識が学べる世界最大の教育プラットフォーム!
Pythonに特化したプラットフォームではありませんが、Python関連の講座も大量にあります。
実際にPython関連のコースを20個以上受講して比較した記事を以下にまとめています!
【20コース以上受講】UdemyのおすすめPythonコースを徹底レビュー!当サイト【スタビジ】の本記事では、世界最大の教育プラットフォーム「Udemy」のPython講座を20コース以上受講した僕がそれぞれのコースを徹底的にレビューしていきます!ぜひムダな時間を費やさず目的に沿った効率の良いPython学習を進めてくださいね!
ちなみに僕自身がデータ分析×PythonやPythonで出来ることを網羅した講座を公開していますので是非こちらもチェックしてみてください!
Udemyでは、好きな講座を売り切り価格で購入することができるので自分のレベルに合った講座だけをつまみ食いして勉強することが可能です!
また講座別の評価も明記してあるので、選びやすいです!
自分のレベルややりたいことにあわせて受講することが可能なのがいいですねー!
僕自身が講師のUdemy講座に関しては以下の記事で限定クーポン(最大90%オフ以上の割引価格)を配布しているのでチェックしてみてください!
テックアカデミー
公式サイト:https://techacademy.jp/
| 【価格】 | 163,900円~ |
|---|---|
| 【オススメ度】 |
テックアカデミーは、オンライン学習ですが現役エンジニアのパーソナルメンターがつくので分からないところも解消しやすく書籍などで進めるよりは圧倒的に進みが早いです。

価格が高い分お尻に火が付きます。
メンターのレベルは非常に高いので自分のやる気さえあれば教材の範囲を超えた内容をガツガツ学ぶことが可能!
僕自身3か月のコースを1か月で終わらせて、応用をガツガツ学んでました。
やる気があって良い意味でメンターを使い倒せる自信があるのであればテックアカデミーは非常にオススメです!
※メンターは変更を願い出れば変えられます。
テックアカデミーのAIコースの先生、超美人!!だけどすごくしっかりしていて、進め方も的確だしこれはかなり力がつくという確信があります
— ayaka@python (@ayakapython) November 28, 2018
Python関連のコースは以下の3つがあります。
Pythonが全くはじめての場合はPythonコースを受講して、その後に画像認識などAIの活用まで踏み込みたいならAIコース、機械学習などを使った予測やデータ分析を深めたいならデータサイエンスコースに移りましょう!
複数コースを並行して学習するセットパックもあります。
テックアカデミーについては 以下の記事で体験談をまとめていますので是非チェックしてみてください!
【体験談】テックアカデミー評判は?3か月本気受講してみたので徹底レビュー!当ブログ【スタビジ】では、様々なプログラミングスクールの中からテックアカデミーのメリット・デメリット・評判について3か月の体験談をもとに赤裸々にレビューしていきます。
無料体験は事前に出来るので不安な方は試してみることをオススメします!
スタアカ
公式サイト:https://toukei-lab.com/achademy/
| 【価格】 | ライトプラン:1,280円/月(全コースが受講し放題) プレミアムプラン:129,800円(通常149,800円・買い切り) |
|---|---|
| 【オススメ度】 | |
| 【サポート体制】 | |
| 【受講形式】 | オンライン形式 |
| 【学習範囲】 | 統計学・機械学習・ディープラーニングを網羅的に学ぶ 生成AI(LLM・RAG・プロンプトエンジニアリング)を学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う 実践的なビジネスフレームワークを学ぶ マーケティングの実行プラン策定 |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です!
プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1(30分×4回)を実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます!
ここで紹介した意外にもPythonを勉強できるスクールやサイトはあります。
以下の記事でまとめていますので是非こちらも参考にしてみてください!
【2022年最新】Python学習に最適なオンラインスクールおすすめ6選当サイト【スタビジ】の本記事では、実際にスクールに通ったりWebサービスを利用したりしながらPythonを習得した僕がおすすめするオンラインメインのスクールを紹介していきます。正直Python学習スクールは乱立し過ぎていてどれを選べばよいのか難しい!そんな人にぜひ読んで欲しいです
【入門者向け】Python学習サイトおすすめ9選を徹底比較!当サイト【スタビジ】の本記事では、入門者向けにPythonを効率よく学習するサイトを紹介していきます!複数のサイトがありますのでメリット・デメリットについて見ながら点数付けをしていきます。ぜひ自分に合ったPython学習サイトを見つける上での参考にしてください!
初心者がPython勉強を挫折しないためには

最後にPython学習を挫折しない方法を少しだけお話しておきましょう。
初心者にとっては最初はわからないことだらけで不安なことが多いと思います。
ロボたん確かにプログラミングって結局勉強し始めても挫折しちゃうことが多いんだよ・・・
ウマたん分かる分かる!ちょっとだけTipsを伝えておくよ!
プログラミング勉強において重要なのは、目的を明確にしておくことです。
なんとなく惰性でプログラミングを勉強しようとしてもそう簡単には上手くいきません。
実際、大学院時代に流行りの手法だからとPythonに取り組んでみましたが結局上手くいかず・・・
今回のように実際に実装したいモノが明確にあれば習得しやすいです。(作りたいモノに対する熱量にもよります)
仮にPythonでできることのイメージを掴むためにはぜひ以下の書籍に目を通してみてください!
手前味噌で恐縮なのですが、僕自身が書籍を出版しています。
Pythonで出来ることやデータサイエンスの業務イメージをつけてもらうのに最適だと思います。
ストーリー形式で分かりやすく書いていますので、ぜひ最初に目を通していただけると具体的な目標のイメージが湧くと思います。
価格は300円ちょっとですし、Kindle unlimitedであれば無料で読めるのでぜひチェックしてみてくださいね!
もし、実装したいモノが特にない場合、ある程度強制的に目標を作ることをオススメします!
強制的に目標を作るにはやはり先ほど紹介したテックアカデミーやスタアカなどのプログラミングスクールに通うことをオススメします!
基本的にはオンライン学習コンテンツを進めていくものになりますが、現役エンジニアのメンターがついて分からないことは素早く対応してくれます。
正直かなりの大金を払うことになるのでやらざるを得ない状況に追い込まれますしメンターチェックが入るのでお尻に火がつきます。AIコースを受講しましたが割と大変でした・・・
教材というよりメンタリングにお金を払っているイメージです。
プログラミングを習得するのにオススメな方法について以下の記事でまとめています!
【やる気UP!】プログラミングを挫折しない!たった3つの方法当サイト【スタビジ】の本記事では、プログラミングを挫折しないで独学で勉強し続けられる方法についてまとめていきます。プログラミングを挫折し続けてきたからこそ伝えられる価値があると思い、今までの経験を基に徹底的にお話しいていきますよー!
Python勉強でよくあるFAQ

最後にいままでの内容を簡単にPython勉強でよくあるFAQとしてまとめておきましょう!
Pythonを勉強するのにどんなサービスがあるの?
独学ならUdemyやPyQがおすすめで自力はしんどいならプログラミングスクールがおすすめです
Pythonの勉強を挫折しないようにするためには?
なぜPythonを勉強したいのか、Pythonを習得して何がやりたいのか、目的を明確にしておくことがまず大事です。「Python勉強を挫折しないためには」
Pythonでどんなことができるの?
データ分析はもちろんのこと、スクレイピングやWebアプリケーション開発もできます。「Pythonで勉強すべき基礎要素・応用」
初心者のPythonの勉強法 まとめ
長々と書いてきましたが、結局のところPythonは手段でしかないので目的がないと習得もクソもありません。
なかなか続かないなー強制力が欲しいなーという人はテックアカデミーやスタアカなどのプログラミングスクールに挑戦してみることをオススメします!
【2022年最新】Python学習に最適なオンラインスクールおすすめ6選当サイト【スタビジ】の本記事では、実際にスクールに通ったりWebサービスを利用したりしながらPythonを習得した僕がおすすめするオンラインメインのスクールを紹介していきます。正直Python学習スクールは乱立し過ぎていてどれを選べばよいのか難しい!そんな人にぜひ読んで欲しいです
どれを選ぶかは人それぞれですが、必ずPythonを使って何を達成したいのかは念頭においておくようにしましょう!
| サービス名 | オススメ度 | 価格の安さ | サポート体制 | どんな人におすすめ? | 公式サイト |
|---|---|---|---|---|---|
| テックアカデミー | パーソナルメンターが欲しい | テックアカデミー | |||
| Udemy | 特定の領域を深堀りして独学で学習したい | Udemy | |||
| PyQ | 環境構築せずとりあえずPythonを触ってみたい | PyQ | |||
| スタアカ | データサイエンスをガッツリ学ぶなら | スタアカ |
ロボたんなんだかワクワクしてきたよ!!Pythonを勉強したい!
ウマたん是非Pythonをマスターしようー!
Pythonを習得しつつも統計学・機械学習・ディープラーニング、そしてデータサイエンティストになるための勉強は続けていきましょう!
ぜひ以下の記事を参考にしてみてくださいね!
【初心者必見】統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!
【入門】機械学習のアルゴリズム・手法をPythonとRの実装と一緒に解説!当サイト【スタビジ】の本記事では、入門者向けに機械学習についてカンタンにまとめていきます。最終的にはどのように機械学習を学んでいけばよいかも見ていきます。細かい手法の実装もPython/Rを用いておこなっていくので適宜参考にしてみてください。
【初心者向け】ディープラーニングの勉強ロードマップまとめ!当サイト【スタビジ】本記事では、ディープラーニングの学習方法について詳しくまとめていきます!ディープラーニングは難しいと思われがちですが、アルゴリズムは意外とシンプルで実装自体も非常に簡単なんです!Pythonでの実装もおこなっていきますよー!
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。
読んだ内容を、スタアカの「Python基礎」コースで身につける
データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。最初のレッスンは無料で見られます。








