入門者のPython プログラムを作りながら基本を学ぶ (ブルーバックス)

最先端を基礎からしっかり!

Pythonの基本構造からスクレイピング、CSVファイルのデータ分析まで扱われているので、かなり幅広い知識が身に付きます。サンプルプログラムがあり、実際に手を動かしながら理解を深められます。Pythonの入門書として優れています。

立山 秀利 (著)
出版社: 講談社 (2018/9/19)、出典:出版社HP

はじめに

最先端分野の主流言語であるPythonを学ぼう

最先端分野のAI(Artificial Intelligence:人工知能)は、自動運転など幅広い分野での活用で非常に注目されています。また、マーケティングなどにおいて、膨大なデータから傾向を導き出す統計分析も脚光をあびています。それら最先端分野のソフトウェア開発で主流となっているプログラミング言語がPython(パイソン)です。

Pythonは科学技術計算に強いといった特長があり、最先端分野で必要とされる高度なプログラムを効率よく作成できます。文法がシンプルでわかりやすく、他言語に比べてすんなり習得しやすいことから、プログラミングの入門者にも人気が高い言語です。

Pythonの用途は今後もさらに広がり、需要はますます高まるでしょう。これまでプログラミングに無縁だった方や小中学生が、Pythonでプログラミングを学び始めるのが当たり前になりつつあります。本書では、そのPythonの使い方を、プログラミング経験のない入門者でも理解できるよう、丁寧に解説します。

 

ゼロからどうやって学ぶのか

プログラミング言語の学習には、いくつかハードルがあります。ハードルを越えていくために重要なのは、一気にいくつも学ぶのではなく、一歩一歩確実に学んでいくことです。本書では、3つの作例を用い、その完成を目指して、ゼロから少しずつプログラムを書いては、そのつど動作確認するパターンを繰り返し、段階的に作り上げていく方法で解説します。

3つの作例の概要は次のとおりです。AIの開発など、高度な先端分野のプログラミングではありませんが、みなさんが普段パソコンで行う作業の自動化に直結するものなので、すぐに利用できるものばかりです。関数、変数、条件分岐、繰り返しといったプログラミングの基礎をしっかり学びながら、高度で複雑なことを簡単に実現できるPythonの醍醐味も体験できる作例となっています。

▼作例1
デジカメなどで撮影した写真の画像ファイルを自動整理するプログラムです。指定したフォルダー内にある複数の画像ファイルについて、撮影日ごとにフォルダーを自動で作成し、移動します。こうしたプログラムによって、手作業でのファイル整理に費やしていた膨大な時間と手間をゼロにできます。

▼作例2
Webページに表示されるデータを取得し、保存する「スクレイピング」のプログラムです。インターネットに公開された情報の収集に日々追われている人は少なくないでしょう。その作業を自動化するプログラムの基本を学べます。

▼作例3
作例2で取得・保存したデータを分析するプログラムです。標準偏差などの統計分析を行ったり、散布図を作成したりします。

 

 

入門者に最適な方法で学べる

ある機能を実現するプログラムの書き方は何とおりかあります。本書では、プログラミング未経験の入門者にとってわかりやすい書き方で解説していきます。その書き方で作例を完成させたあと、プログラムのメンテナンス面などを考慮した書き方に変更していきます。入門者にとってわかりやすい書き方で進めていくので、着々と理解していけるのです。解説手順のとおりにプログラミングするだけで、プログラムが正しく動くことを楽しみながら、自然とPythonのプログラミングに馴染んでいけるでしょう。
Pythonは用途が広い分、入門者の方はどこから学習を始めればよいのかわかりにくいものです。本書では、3つの作例をそれぞれゼロから作り上げていきますから、それがたとえ解説手順どおりにやっただけでも、「自力でプログラミング」をすることになります。

入門者のみなさんには、まず本書をとおして、Pythonのプログラムを作り上げる体験をしていただきたいと思います。そして「プログラミングってこういうことか!」「なんだ、やってみたら自分にもできるじゃないか」と思っていただけることを願っています。

立山 秀利 (著)
出版社: 講談社 (2018/9/19)、出典:出版社HP

もくじ

必ずお読みください(本書のサポートページについて)
はじめに

1章 Pythonとは
1.1 多彩な分野で重宝されるPython
AIなどの先端分野で活躍するPython
なぜPython が人気なのか
1.2 本書の学習に用いる作例紹介
作例を作りながらPythonを学ぶ意義
3つの作例の概要
各作例からPythonの何を学べるのか
COLUMN 更新日を撮影日と見なす
ファイルに拡張子を表示させる

2章 Pythonを学ぶ前の準備
2.1 Pythonのプログラミング環境を用意しよう
Anacondaについて
Anacondaをインストールしよう
2.2 統合開発環境「Spyder」の起動方法と画面構成
Spyderを起動する
エディタとIPython コンソールの役割
COLUMN 「Jupyter Notebook」について

3章 Pythonプログラミングはじめの一歩
3.1 Pythonのプログラミングの5つの原則
まずは押さえたいPythonの原則
簡単なコードを書いて、動かしてみよう
コードを記述しよう
上達の早道は、5つの原則をしっかり押さえること
3.2 記述したコードを実行しよう
コードを実行する前に保存が必要
実行してエラーが表示されたら
3.3 「関数」の基本を学ぼう
いくつかの処理がまとめられた「関数」
関数の一般的な書式
COLUMN 冒頭に自動挿入された6行の意味
関数や引数はExcelにも登場している

作例1

4章 Pythonでファイルやフォルダーを操作する
4.1 フォルダーを1つ作成するコードを記述しよう
Pythonの基礎を学びながら、作例1を作成する
作例1を準備しよう
「フォルダーの作成」は、ライブラリの関数を使う
ライブラリの関数は事前に読み込んで使う
フォルダーを作成するmkdir関数のコード
フォルダーを作成する場所を指定する記述
コードを記述して動作確認
相対パスと絶対パス
4.2 画像ファイルを移動するコードを記述しよう
「ファイルの移動」もライブラリの関数を使う
「コードを上から並べて記述していく」原則
4.3 Pythonのプログラミングに慣れていくためのノウハウ
Spyder のコード補完機能で効率よく入力しよう
機能を1つ作成したら、必ず動作確認を行う
COLUMN フォルダーの区切りを表す記号について
本書における関数の表記について

5章 ファイルの更新日が名前のフォルダーを作成しよう
5.1 ファイルの更新日をフォルダー名にするために必要な処理
前章で作った機能からどう発展させるのか
実現に必要な処理と工程
5.2 更新日を秒単位のデータとして取得
更新日のデータを取得する方法
更新日のデータを取得するコード
取得したデータを確認するには
5.3 コードを試しに入力し、そのコードの実行結果を確認する
IPython コンソールでコードの入力と実行を行える
実行後、「指定されたファイルが見つかりません。」というエラーになる場合
print 関数なしでも、取得したデータを出力できる
5.4 取得したデータを、秒単位から日付単位に変換する
秒単位から日付に変換するには
datetime.datetime.fromtimestamp関数を体験する
5.5 変数を使い、データを取得するコードと、変換するコードに分ける
1行が長いコードを見やすくしよう
変数の基本を学ぼう
IPython コンソールで変数を体験しよう
変数を使って、2つのコードに分割するには
IPython コンソールで、変数に代入するコードを試す
IPython コンソールで、変数を使うコードを試す
変数を使った2つのコードで、.py ファイルを書き換える
5.6 ファイルの更新日が名前のフォルダーを作成しよう
フォルダーを作成する機能をどう書き換えるか
日付データを文字列に変換するには
フォルダーを作成する関数の引数をどう書き換えるか
IPythonコンソールで+演算子を試してみよう
IPython コンソールで、パスと戻り値を連結してみよう
フォルダーを作成する関数の引数を書き換える
「オブジェクト」と「メソッド」について
COLUMN 階層構造になったモジュールがある
対話モード(インタラクティブシェル)
IPythonコンソールでのimport文
「=」の前後の半角スペースについて
変数名のルール
わかりやすい変数名を付けよう

6章 条件によって実行する処理を使い分けよう
6.1 複数のファイルを処理するうえで、必要となる対処
本章で追加する処理について
更新日が既存のフォルダー名と同じだと、エラーになる
「条件分岐」で、既存のフォルダー名と同じ場合に行う処理を作る
6.2 条件分岐の基礎を学ぼう
条件分岐とは
if文の基礎と比較演算子
条件式の基礎と比較演算子
if文の4パターン
6.3 パターンAとBのif文を体験しよう
パターンAを体験
パターンBを体験
6.4 同じ名前のフォルダーがない場合のみ、フォルダーを作成する
どのパターンのif文を使うとよいのか?
同じ名前のフォルダーが存在しないことを調べるには
if文で、フォルダーを作成するコードを書き換えよう
sample1.pyが実行されたときの処理の流れ
COLUMN 同じ名前のフォルダーへの対処は専用の関数でも可能
.pyファイルの変数はIPython コンソールでも使える

立山 秀利 (著)
出版社: 講談社 (2018/9/19)、出典:出版社HP

7章 「繰り返し」で複数のファイルに同じ処理を実行しよう
7.1 どうやって同じ処理を続けて行えるようにするのか
本章で追加する処理について
複数のファイルに同じ処理を行える「繰り返し」とは
7.2 for文の基礎を学ぼう
for文の基本的な使い方
for文の変数の機能
7.3 繰り返し処理したい部分をfor文で書き換えよう
繰り返し処理したい部分を確認する
sample1.pyをfor文で書き換える
7.4繰り返しが行われるたびに、ファイル名の数字を1つずつ増やす
ファイル名の記述にはfor文の変数を使う
変数を用いたファイル名の記述方法
「001」からとなるように、変数に1を足す
sample1.pyのコードを追加・変更しよう
COLUMN 同じコードが何度も記述されていると、変更する際に苦労する
for文には別パターンの書式がある
繰り返しのもうひとつの構文while文
range 関数の補足 足し算以外の数値計算用の演算子

8章 変数を利用して、作成したフォルダー数を取得する
8.1 処理の流れの中で、変数の値を変化させるとは?
本章で学ぶ変数が、これまで使った変数と異なる点
累算代入演算子による代入
累算代入演算子で、指定の値を加える/減らす
8.2 作成されたフォルダー数を取得し、出力する
フォルダーが作成されると、変数の値に1ずつ加えるようにする
変数の初期値と、変数の値に1ずつ加えるコードを追加する
作成されたフォルダー数をメッセージ形式で出力する
累算代入演算子を用いて変数を扱う実践的な例
COLUMN 主な累算代入演算子
フォルダー数を「数える」関数を用いた方法の場合

9章 ファイル名やファイル数に関係なく処理できるようにしよう
9.1 ファイルの名前や数に関係なく処理するには
現在のプログラムにある問題
「リスト」を軸に問題を解消する
9.2 リストの基礎を学ぼう
「リスト」とは
リストの基本的な使い方
リストを変数に代入して使う
リストの基礎を体験しよう
9.3 リストとfor文の組み合わせ方を学ぼう
リストの要素を順に取り出す
リストと繰り返しの組み合わせを体験
9.4 ファイル名の一覧を取得する方法を学ぼう
ファイル名のリストを取得するos.listdir関数
ファイル名のリストをfor文と組み合わせる
9.5 指定のフォルダー内にあるすべてのファイルを処理できるようにしよう
プログラムをどのように書き換えるのか
ファイル名のリストを変数に代入する
ファイル名の記述を変数に変更する
COLUMN リストの要素の値の変更

10章 機能は変えずにプログラムの完成度を高めよう
10.1 「変更がしやすいプログラム」を目指す理由
「変更がしやすいプログラム」とは
書き換えられる箇所を探す
書き換えながら、プログラムの完成度を高める
10.2 同じ記述を変数にまとめる
同じ記述は変数に代入してまとめる
作例1でフォルダー名の記述をまとめよう
フォルダー名の末に「/」のない記述もまとめられることがある
作例1の完成
あえて専用の関数を使わずに記述していた箇所
「既存のフォルダー名と同じ場合、フォルダーを作成しない」機能を関数で書き換える
「フォルダー名とファイル名の連結」を関数で書き換える
COLUMN 日本語でコメントを入れてコードを説明する
大文字アルファベットと「_」で構成する変数名
大半が同じで一部異なる記述を変数にまとめるには

作例2

11章 PythonでWebページ上のデータをスクレイピングしてみよう
11.1 スクレイピングするうえで、最低限知っておきたいHTMLの知識
HTMLに何が記述されるのか
タグと要素、属性、
作例2用WebページのHTML、各行の解説
WebページのHTMLの効率的な解析方法
11.2 PythonでWebページに表示されているデータを取得するには
スクレイピング処理の全体像
目的のWebページに接続し、HTMLを取得するには
HTMLの要素を切り出せるかたちに変換するには
作例2のプログラムを作り始めよう
11.3 取得したHTMLから目的のデータを取り出すには
id名で要素を切り出すには
要素内容のみを取り出すには
class名で要素を切り出すには
11.4 取得したデータをCSVに保存する形式に加工しよう
CSVファイルについて
CSVに追加するデータをリストとして用意
空のリストに要素を追加する体験をしよう
空のリストを用意し、日付データを追加
残り3つのデータもリストに追加
11.5 データをCSVファイルに追加・保存しよう
CSVファイルにデータを追加・保存する流れ
CSVに保存する処理を完成させよう
append メソッドの代わりに使える「リスト内包表記」について
11.6 エラーに対する処理を追加しよう
例外処理とは
try文と except文で例外処理を作成
通信関係の例外処理を追加しよう
エラーの詳細も出力するには
CSVファイル関係の例外処理も追加
COLUMN スクレイピングできない/禁止のWebサイトもある
「rs.text.encode(rs.encoding)」について

作例3

12章 CSVファイルのデータを分析してみよう
12.1 作例3で行う3つの分析について
スクレイピングしたデータを用いて分析する
【分析1】 平均など基本的な統計による8種の分析
【分析2】 データそれぞれの相関係数を求める分析
【分析3】 散布図を使う分析
12.2 基本的な統計による分析と、相関係数を求める分析
分析に使うデータについて
まずは「データフレーム」を作成する
【分析1】を行うコードを追加する
【分析2】を行うコードを追加する
12.3 散布図を描画する 散布図を作成するには 作成した散布図を描画
12.4 モジュールの記述を簡略化しよう
matplotlib.pyplotの記述を簡略化
pandasの記述も簡略化
COLUMN pandasモジュールで使える主なデータ分析の関数
おわりに
さくいん
付録1 モジュール名の記述を省き、関数名だけ記述する方法
付録2 オリジナルの関数を定義して使うには
付録3 文字によって要素をわかりやすく取り出せる「辞書」
(付録1~3は、2ページに紹介のある本書サポートページからPDFファイ ルでダウンロードいただけます。電子版では、巻末に掲載しています)

立山 秀利 (著)
出版社: 講談社 (2018/9/19)、出典:出版社HP