ひぐぺん工房トップへ おかげさまで24周年!

ひぐぺん工房(松浦健一郎・司ゆき) - HigPen Works
・今までの仕事 ・書籍 ・最近の業務 ・対応可能言語 ・お見積

『Technical Master はじめてのPython エンジニア入門編 Python3対応』
Q&A

以下の回答で問題が解決しなかった場合には、 こちらから ご連絡ください。

訂正


2020/03/10
Q.pandasにおけるデータの変更(Section12-01)
A.
p.223において、データを変更するために以下を実行すると、
  >>> data[6:8]['price']=[540,590]

以下のような警告が表示されることがあります。
  <stdin>:1: SettingWithCopyWarning:
  A value is trying to be set on a copy of a slice from a DataFrame.
  Try using .loc[row_indexer,col_indexer] = value instead
  See the caveats in the documentation: …

これは元のデータを変更するのではく、コピーされたデータを変更しようとしている可能性がある…という警告です。
この問題を回避するには、上記の代わりに以下を実行してください。
  >>> data.loc[6:7, 'price']=[540,590]

locはデータフレーム(DataFrameクラス)のメソッドで、元のデータへのアクセスを提供します。

補足


2019/08/02
Q.ダウンロードファイルの実行
A.
本書のダウンロードファイル内のプログラムを実行する方法について補足します。
  1. Section02-01/02-02/02-03のいずれかを読んで、CPython/Anaconda/Minicondaのいずれかをインストールします。pythonコマンドの起動方法も確認しておきます。
  2. 入手したダウンロードファイルを展開します。ここでは、例えば「C:\Users\higpen\Pythonエンジニア入門編」に展開したとします。
  3. コマンドプロンプトまたはAnacondaプロンプトを起動します。
  4. cdコマンド(本書p.40)を使って、実行したいプログラム(.pyファイル)があるディレクトリに移動します。例えばChapter11のfft2.pyを実行する場合には、「cd C:\Users\higpen\Pythonエンジニア入門編\chapter11」とします。
  5. 必要なパッケージがある場合には、事前にインストールしておきます。例えばChapter11(Section11-03)のfft2.pyの場合には、NumPy(Section11-01)/SciPy(11-02)/Matplotlib(11-03)のインストールが必要です。
  6. 必要なファイルがある場合には、事前に準備しておきます。例えばChapter11のfft2.pyの場合には、Chapter10(Section10-08)で作成するla.wavという音声ファイルを、あらかじめchapter11ディレクトリにコピーしておく必要があります。作成済みのla.wavも用意しましたので、ダウンロードしてchapter11ディレクトリにコピーし、ご利用ください。
  7. pythonコマンドを使って、プログラムを実行します。例えばfft2.pyの場合には、「python fft2.py」とします。
なお、Windows(Windows10)のエクスプローラを使って、目的のディレクトリでコマンドプロンプトを開く方法もあります。
  1. エクスプロ-ラで、実行したいプログラム(.pyファイル)があるディレクトリを表示します。
  2. エクスプローラのアドレスバー(上端にある「PC>C:>ユーザー>…」などと表示されている枠)をクリックして、「cmd」と入力し、Enterキーを押します。
  3. 現在開いているディレクトリでコマンドプロンプトが開くので、pythonコマンドを使ってプログラムを実行します。

2020/04/02
Q.TensorFlowを使ったプログラムの実行(Section 13-02)
A.
TensorFlowのバージョンアップ時に仕様が変更されて、プログラムが動かなくなることがあります。例えば、実行時に以下のようなエラーが出る場合があります。
  AttributeError: module 'tensorflow' has no attribute 'logging'

本書のプログラムはTensorFlow 1.x用ですが、プログラム(tf_train.pyとtf_image.py)を以下のように修正すると、TensorFlow 2.xでも動作するようになります。本サイトで配布しているダウンロードファイルは修正済みです。
  旧:import tensorflow as tf
  新:import tensorflow.compat.v1 as tf

2020/05/29の時点において、上記のように修正したプログラムが、以下の環境のいずれでも動作することを確認しました(以下の3.は修正前のプログラムでも動作します)。なお、TensorFlowのバージョンは「pip list」または「conda list」で確認できます。
  1. Python 3.8.3(CPython, 64ビット)+TensorFlow2.2.0(pip install tensorflow)
  2. Python 3.7.3(Miniconda)+TensorFlow2.1.0(conda install -y tensorflow)
  3. Python 3.7.3(Miniconda)+TensorFlow1.15.0(conda install -y "tensorflow<2")
なお、指定した画像を判別するプログラム(tf_image.py)を実行する際には、プログラム(tf_image.py)と同じフォルダに、判別対象の画像ファイル(0.png~9.pngなど)を配置してください。

WindowsでTensorFlowをインストールする場合、64ビット版のPythonを使用する必要があります。「python」コマンドを実行したときのバージョン表示から、32ビット版か64ビット版かを確認することができます。
ウイルス対策ソフトウェアを使用していて、TensorFlowのインストールに失敗する場合には、一時的にウイルス対策ソフトウェアを無効にして、インストールしてみてください。

これでも本書のプログラムが動作しない場合があるかもしれません。例えば、実行時に以下のようなエラーが出る場合もあります。
  ImportError: DLL load failed while importing
  _pywrap_tensorflow_internal: 指定されたモジュールが見つかりません。

こういった場合は、以下のようにバージョンを指定してTensorFlowをインストールした後に、本書のプログラムを実行してみてください。
上記はTensorFlow 1.xをインストールします。2020/04/02の時点で、Windows 10でPython 3.7とTensorFlow 1.15を使って、本書のプログラムが動作することを確認しました。また、この時点ではPython 3.8を使うとTensorFlowが正しく動作しませんでした(Python 3.7をお使いください)。

また、上記の手順でもTensorFlowのインストールに失敗する場合には、以下をお試しください。原因ははっきりしないのですが、色々なバージョンのTensorFlowをインストールしたり、pipとcondaを併用しているうちに、TensorFlowのインストールが上手くできなくなることがありました。
  1. TensorFlowを一度アンインストールします。CPythonは「pip uninstall -y tensorflow」を、Anaconda/Minicondaは「pip uninstall -y tensorflow」と「conda remove tensorflow」の両方を実行します。その後、上記の手順でTensorFlowを再インストールします。
  2. それでもTensorFlowをインストールできないときには、CPythonやAnaconda/Minicondaをアンインストールしてから、再インストールします。その後、上記の手順でTensorFlowを再インストールします。筆者の場合、Minicondaを再インストールしたら、TensorFlowを上手くインストールできるようになったことがありました。

2020/02/04
Q.括弧の使い分け(Section 04-04、05-01、05-02など)
A.
Pythonでは、次のような3種類の括弧(かっこ)を使います。

記号名称
()丸括弧、小括弧
{}波括弧、中括弧
[]角括弧、大括弧

文法ごとに正しい種類の括弧を使う必要があります。誤った種類の括弧を使うと、プログラムが動作しなかったり、意図とは違う動作をしたりします。

例1:
タプルを作るときには、丸括弧()を使います(p.76)。
  a = ('curry', 860)
タプルの要素を取得するときには、角括弧[]を使います(p.77)。
  a[0]

例2:
リストを作るときには、角括弧[]を使います(p.70)。
  menu = ['curry', 'pasta', 'steak']
リストの要素を取得するときには、角括弧[]を使います(p.71)。
  menu[0]
リストの要素を変更するときにも、角括弧[]を使います(p.71)。
  menu[1] = 'doria'

本書の例において、どの種類の括弧が使われているのかをよく確認して、同じ種類の括弧を入力してみてください。もし、お使いの環境で括弧が上手く入力できない場合には、以下をお試しください。

2020/02/04
Q.timeitモジュールの実行方法(Section 10-05)
A.
timeitモジュールを実行するときには、Pythonインタプリタの内部ではなく、コマンドプロンプトやAnacondaプロンプト上で、例えば次のように実行してください。

C:\Users\ユーザ名> python -m timeit "[x for x in range(100)]"
100000 loops, best of 5: 3.16 usec per loop

Pythonインタプリタの内部で実行すると、次のようなエラーになってしまいます。
>>> python -m timeit "[x for x in range(100)]"
 File "", line 1
  python -m timeit "[x for x in range(100)]"
       ^
SyntaxError: invalid syntax

この場合はPythonインタプリタを終了してから、上記のようにtimeitモジュールを実行してください。Pythonインタプリタの終了には、Ctrl-Zキー(macOS/LinuxではCtrl-Dキー)を使います(p.38)。

あるいは、Pythonインタプリタを実行しているコマンドプロンプト(Anacondaプロンプト)とは別に、もう一つコマンドプロンプト(Anacondaプロンプト)のウィンドウを開き、そちらでtimeitモジュールを実行しても構いません。

2020/02/18
Q.本書の通りに入力したはずなのに動かない
A.
本書の通りにプログラムを入力したはずなのに、意図した通りに動かない場合には、以下をお試しください。
  1. ダウンロードファイルを利用する。
    まずはダウンロードファイルをそのまま利用して、実行してみてください。これで正しく動作する場合には、入力したプログラムのどこかが本書のプログラムと異なっている可能性があります。ダウンロードファイルが正しく動作しない場合には、このQ&Aを参照していただき、Q&Aに対策が掲載されていない場合には、誠にお手数ですがご連絡をいただけましたら幸いです。
  2. 入力したプログラムと本書のプログラムを比較する。
    目で比較しても分からないときには、ツールを使ってファイルの内容を比較するのがおすすめです。コマンドラインで使える標準搭載のツールとしては、macOSやLinuxには「diff」、Windowsには「fc」があります。別途インストールが必要ですが、Windowsでは「WinMerge」などのツールも便利です。またテキストエディタによっては、ファイルの内容を比較する機能を内蔵しているものもあります。
例えば、以下は本書p.191のプログラムです。
  pattern = r'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,}'
以下は一部が異なっているために正しく動かないプログラムです。
  pattern = r'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8.}'
どこが異なっているのか分かりづらいのですが、この場合は末尾付近の「8,」と「8.」が異なります。

また、以下は本書p.245のプログラムです。
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
以下は一部が異なっているために正しく動かないプログラムです。
  tf.keras.layers.Dense(512, activation=tf.nn.rule),
こちらも分かりづらいのですが、末尾付近の「relu」と「rule」が異なります。

2020/04/21
Q.CPythonとAnaconda(Miniconda)の併用(Chapter 02)
A.
CPythonとAnaconda(またはMiniconda)を併用することは可能です。

筆者の場合、Python 3.8(CPython)と、Python 3.7(Miniconda)を併用しています。Python 3.8(CPython)においてTensorflow 1.xが動作しなかったため、Python 3.7(Miniconda)上にインストールして使用しました。MinicondaにTensorflowをインストールする際には、conda、pipともにインストールは可能でした(Anaconda/Minicondaではcondaが推奨されています)。

他のライブラリについても、Python 3.8(CPython)上で動作しない場合には、併用しているPython 3.7(Anaconda/Miniconda)上で使用できる可能性はあります。

2020/04/24
Q.scikit-learnを使ったプログラムの実行(Section 13-01)
A.
ウイルス対策ソフトウェアを使用していて、scikit-learnのインストールに失敗する場合には、一時的にウイルス対策ソフトウェアを無効にして、インストールしてみてください。

また、Section 13-01のプログラムを実行するには、scikit-learnに加えて、pandas(Section 12-01)とMatplotlib(Section 11-03)をインストールしておいてください。

2020/04/28
Q.画像ファイルの入力(Section 10-07)
A.
p.196の画像ファイルを入力するプログラム(image3.py)は、一つ前にあるp.194の画像を描画するプログラム(image2.py)が出力する、画像ファイル(random.png)を読み込みます。image3.pyを正しく実行するには、image3.pyと同じフォルダに、random.pngが存在する必要があります。もしrandom.pngが存在しない場合、以下のようなエラーになります。

FileNotFoundError: [Errno 2] No such file or directory: 'random.png'
(ファイルが見つからない:random.pngというファイルまたはディレクトリがない)

image3.pyを正しく実行するには、以下の手順をお試しください。
  1. 本書のダウンロードファイルを使用してください。
  2. chapter10フォルダに移動します。移動の方法は、このQ&Aの「ダウンロードファイルの実行」をご覧ください。
  3. 「python image2.py」として、image2.pyを実行します。
  4. エクスプローラからrandom.pngを開くなどして、image3.pyと同じフォルダにrandom.pngが作成されていることを確認してください。
  5. 「python image3.py」として、image3.pyを実行します。

最終更新 2020/05/29
トップページへ
©ひぐぺん工房 禁無断転載
動画講座「 AIへまっしぐら! Pythonアニマルズ 」 最新刊『 AWSでつくる AIプログラミング入門 』
このサイトはリンクフリーです。 このサイトはChromeで動作検証しています。ブラウザにかかわらず表示に乱れがありましたらどうぞお知らせ下さい。メールを送る