PyQオフィシャルブログ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【コース追加】「統計分析コース」リリースのお知らせ

斎藤です。「統計分析コース」をリリースしました。

f:id:nana_yu:20180524163116p:plain

統計分析の知識は、最近、特に重要になっていますが、なかなか体系的に学ぶ機会は少ないと思います。

PyQの統計分析コースでは、統計学の記述統計学の基礎と推計統計学を一通り学べるようにカリキュラムが用意されています。この機会に、是非、身につけてみましょう。

pyq.jp

コースを学ぶと何ができるようになる?

このコースを学ぶと以下のことができるようになります。

  • 統計分析の基本であるscipy.statsを使えるようになります。
  • 数学の知識がなくても仮説検定が分かるようになります。

学習画面の動画紹介

PyQのデータ処理分野のクエストはJupyter Notebookと呼ばれる、 Pythonのデータ分析分野で広く使われているツールをブラウザ上で動かしながら学習します。 どのような画面で学習を進めていくのか、動画で解説します。


PyQ(パイキュー)統計解析コース

コースの内容

以下の12パートあります。新規パートは、[New]がついた4つです。それぞれ、紹介します。

  1. Jupyter Notebookの使い方
  2. pandas体験
  3. pandasのデータ構造
  4. データ処理
  5. NumPyデータ作成
  6. NumPyの基本
  7. NumPyの関数
  8. 役に立つNumPy
  9. 確率・統計の基礎知識 [New]
  10. サンプリング [New]
  11. 色々な推定 [New]
  12. 仮説検定 [New]

f:id:tsutomu3:20180524142029p:plain

1. 確率・統計の基礎知識

4つのクエストで、確率・統計の基礎を学びます。

1-1 シミュレーションと統計量

シミュレーションを通して、確率変数とは何か、基本統計量を学びます。

1-2 大数の法則とばらつき

対数の法則を通してばらつきを抑える方法を学びます。 ヒストグラムの書き方や、確率変数の法則についても学びます。

1-3 ベイズの定理

ベイズの定理を学び、モンティ・ホール問題などで確認します。

1-4 統計の基礎の確認

確率や統計の演習問題をします。

2. サンプリング

3つのクエストで、サンプリングについて学びます。

2-1 母集団と標本

母集団と標本を学び、色々な抽出方法を学習します。

2-2 標本平均の標準誤差

標本サイズや標準誤差を学びます。

2-3 サンプリングの確認

サンプリングの演習問題をします。

3. 色々な推定

3つのクエストで、色々な推定について学びます。

3-1 点推定

推測統計学と点推定を学びます。

3-2 区間推定

区間推定、信頼区間、t分布などについて学びます。

3-3 推定のおさらい

推定の演習問題をします。

4. 仮説検定

6つのクエストで、仮説検定について学びます、 仮説検定は、独特な手法でわかりにくい部分もありますが、19問の問題で徹底的に学習します。

4-1 仮説検定とは

帰無仮説、対立仮説、有意水準、p値などの用語と仮説検定の流れについて学びます。

4-2 データに基づく仮説検定

仮説検定の種類や1標本の仮説検定について学びます。

4-3 両側検定と片側検定

両側検定と片側検定を学びます。

4-4 2標本の検定

2つの標本の検定について、血圧降下の例題で学びます。

4-5 多重仮説検定

多重仮説検定を学びます。

4-6 色々な仮説検定

色々な仮説検定の演習問題をします。


いかがでしたでしょうか。確率的な振る舞いに対しての判断方法を学ぶことで、統計分析だけでなく機械学習を使った分析にも役立つことと思います。

さらに、近日中に、回帰分析問題の追加を予定していますので、よろしくお願いします。

PyQ 統計分析コース詳細

PyQブログの更新は、SNSで告知しています。

リリース情報・PythonやIT全般のお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

twitter.com

PyQ公式Facebook

PyQ

Pythonオンライン学習サービスPyQはこちら

pyq.jp

プログラムの設計について。「関数ってどうして必要なんでしょうか?」に実際の業務でのポイントも踏まえて解説します

f:id:nana_yu:20180511153545p:plain

f:id:nana_yu:20180316121637j:plain
こんにちは。PyQサポートの大村です。 今日のPythonお悩み解決は、「何度も行う処理を関数にまとめる」ことの意味やメリットを説明します。

この記事の概要

対象者

  • 実務的なPythonコードを書きたい人
  • プログラムの良い設計とはどのようなものなのかを知りたい人
  • PyQで「設計」のクエストをしたけれどピンと来なかった人

記事を読むのにかかる時間

  • 約8分

質問内容

PyQには「設計」というコードの組み立て方を学ぶ課題があります。

blog.pyq.jp

こちらの問題に関するご質問をいただきました。

「何度も行う処理を関数にまとめる」というクエストがあり、生コードを 関数にまとめるというのがありました。まとめた関数が配置されたコードだと、毎回その関数 を読み解く必要があり、かなり煩わしさを感じ、一つの関数にまとめて書くほうがいいのではないかと思いました。 関数がたくさんあっても徐々に読み解けるようになって、煩わしさは解消されるものなのでしょうか。

回答

問題中にも解説がありますが、単純に「同じ処理だから」という理由だけで共通の関数にするのはオススメしません。 1つの機能に対する処理を関数にまとめます。テストもこの機能単位(関数やクラス)で実装します。

また、関数は内部の実装を確認しなくても、何をするものかわかっていれば使えます。 「Xというデータを渡したらYという結果を返す(もしくは何か処理をする)」と認識しておけばいいです。

そのために、なるべく何をしている関数かわかる関数名をつけます。

例えば、クエスト「33-2: 関数にするポイントと設計」 1問目で定義している関数ですと read_csvという関数名なので「csvのデータを読込みその結果を返してくれる関数」と予測がつきます。 2問目のwrite_csvは、「渡したデータをcsvに書き込んでくれる関数」と予測がつきます

そうは言っても、PyQの問題のような短いプログラムですと関数やクラスの良さがわかりづらいです。 欲しい処理を上から順に書いて置いたほうが読みやすいと思います。

実際の業務

実際の業務では沢山の「他人が書いたプログラム」と「自分が過去に書いたプログラム」を組み合わせてアプリケーションを作っていきます。

毎回、すべてのプログラムを読むのは時間的に無理です。また、すべての機能を把握して1人で実装するのも時間がかかります。

(すでに存在するライブラリなどを再作成することを、すでに世の中に存在する車輪を再度作ることに例えて「車輪の再発明」などと揶揄します)

機能を関数にまとめて、他の人でも簡単に利用できる状態にしておくことが重要です。

実際、自分が書いたプログラムでもしばらく経ってから読むとまったく覚えのないコードになっています。 プログラミングはなるべく分かりやすい機能ごとに分割して、それごとにテストをしておくと、仕様追加や仕様変更が発生しても該当部分を修正し、試験するだけでよくなります。

もし、全ての処理を1つの関数内に書き、そこに修正を加えると前回の作成時と同じ分量の試験を行う必要が出てきます。

このようにプログラムは、機能ごとに処理を分割して記述していくという思考で設計されます。

これを踏まえて、クエスト 「関数にするポイントと設計」 の問題文と解説を読んでいただけませんでしょうか。

PyQブログの更新は、SNSで告知しています。

リリース情報・PythonやIT全般のお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

twitter.com

PyQ公式Facebook

PyQ

Pythonオンライン学習サービスPyQはこちら

pyq.jp

「PythonユーザのためのJupyter[実践]入門」とのコラボレーション問題をリリースしました

こんにちは。PyQチームのnao_yです。

技術評論社より発売されている「PythonユーザのためのJupyter[実践]入門」通称「Jupyter本」とのコラボレーション問題がリリースされました! jupyter_book_01.png

「PythonユーザのためのJupyter[実践]入門」の紹介

この書籍は、データ解析のための環境構築、データ加工・可視化の様々な手法と役に立つtips、クラウド環境の利用までを詳細に解説しています。Jupyter Notebookを使ったデータ分析・可視化の入門に最適な一冊です!

今回のコラボレーション問題では、以下の3つに焦点を当てています。

  • pandasでExcelファイルを読み込む

  • 散布図でデータを可視化する

  • ヒストグラムでデータを可視化する

書籍と同じく実際のデータを使った問題になっていますので、まさに実践です。

f:id:nao_y_py:20180528114414p:plain

コラボレーション記念として、コラボ問題とJupyter/Numpyコースを体験できます。

書籍は読んでいるけどPyQは利用していないという書籍の読者の方向けにコラボレーション問題コースを用意しました!このコースはコラボレーション問題の他に、PyQの使い方、JupyterやNumPyの初級問題も含んでいますのでPyQで学習する雰囲気を掴むことができます。

f:id:nao_y_py:20180528114253p:plain

コラボレーション問題の体験方法

以下のキャンペーンコードを入力することでコラボレーション問題コースで3日間のPyQ無料体験ができます。 https://pyq.jp/ にアクセスして「学習を始める」ボタンをクリックし、画面の案内に従ってキャンペーンコードを入力してください。なお、無料体験にはクレジットカードの登録が必要となります。

キャンペーンコードの入力方の詳細は以下のドキュメントをご覧ください。 docs.pyq.jp

キャンペーンコード :

キャンペーンコード:jupyterbook

docs.pyq.jp

PyQユーザーの方も書籍の読者の方もぜひコラボレーション問題にチャレンジしてみてください!

PyQブログの更新は、SNSで告知しています。

リリース情報・PythonやIT全般のお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

twitter.com

PyQ公式Facebook

PyQ

Pythonオンライン学習サービスPyQはこちら

pyq.jp

はじめてのPythonプログラミング:英語が苦手!というあなたへ、日本語で読む「for A in B:」

f:id:nana_yu:20180521143508p:plain

こんにちは!nanaです。 PyQにチャレンジしている方から、こんなお話を聞きました。

  • for vegitable in vegitablesin どっちにどっちを入れるのか分からない!」
  • 「日本語と英語は順序が逆だから混乱する」
  • 「forって『〜のために』じゃないの?」

これについて、現在第一線で活躍しているプログラマーの方からも、 「僕も中一からプログラミングしていたから気持ちわかる」というコメントがありました。

Pythonは「可読性の高い言語」と言われていますが、その成り立ちが英語なので 英語の文法と同じ書き方の場合、説明が省かれてしまっていたりします。 (そういえば、わたしも初めてfor文に触れた時はどっちがどっち?と混乱した記憶があります)

特に前置詞は、英語が苦手な人がつまづいたきっかけだったりすることも多い内容です。 一歩戻って、プログラムに使われている英語を解説しつつ、日本語と図で説明しよう!というのがこの記事の企画です。

この記事の概要

対象者

  • Python初学者で、for文を学んだことがある人(前半でおさらいもしています)
  • 英語が苦手!という人

記事を読むのにかかる時間

  • 約6分

日本語で書いたfor文見せて!という方は、目次からまとめをお読みください。

for文の解説

まずはfor文についてプログラムらしい説明をしましょう。おさらいですね。 PyQ(https://pyq.jp)では、for文についての解説は以下のようになっています。

for文は同じ処理を繰り返し行う場合に利用します。

for文 = 繰り返し はプログラムを学習し始めた時にまず聞くことになる説明だと思います。

for文の例

以下は、for文を利用した、リストを表示するプログラムです。 for文を利用して、リストの要素を前から順に1つずつ表示しています。

入力内容

# 一週間の曜日が入ったリストweekを定義します。
week = ['月', '火', '水', '木', '金']

# リストweekの内容を1つずつ表示します。
for day in week:
    print(day)

実行結果

月
火
水
木
金

ここで、英語の前置詞がわからない問題が出てくる

ここまで、なるほどなるほど…と読み進めるのですが、いざ自分で書こうとすると 「あれ、inの前後ってどっちがどっちだっけ?」と感じる人も出てくるのではないでしょうか。

すこしだけ英語の勉強をしましょう

前置詞は色々な和訳がつくことがあり、英語が苦手な人が特に苦手意識を感じやすいです。 まずは前置詞をイメージで捉えられようになると、前置詞(の名前がついている演算子)を使った処理を思い描きやすくなります。

A in B

「Bの中にAがすっぽりと含まれている」 というイメージが、A in Bの意味あいです。 A in Bのイメージ

Bは、範囲だったり、箱や部屋のようなものだったり、時間だったりしますが、「囲まれているもの」というイメージです。 プログラムでfor文を考える時の日本語は「AがBの中にある」とすると、語順の混乱がなくていいと思います。

なんでAが先にくるの?

「A in B」の代表的な日本語訳は「Bの中にあるA」となり、日本語とは語順が逆になってしまいます。 これが混乱の元になるのですが、どう考えればよいのでしょうか。

このような語順になる場合がほとんどなので、英語は日本語と語順が逆だよ! とパターンで覚えてしまってもいいかとおもいます。

ただ、英語がなぜそういう語順になりやすいかというのは、「言いたいことを、なるべく言いたい順でならべたがる」=「大事なこと(結論、主題など)を先に言いたがる」という性質があるためです。

for文の例でいうと、

  1. 曜日(day)についてあれこれする処理をしたい
  2. = 曜日(day)のことを話したい
  3. => 話したい内容であるdayが先にきて day in week となる

となります。仕組みを理解して覚えるのもいいかもしれませんね。

for x

forは、「〜の為に」や「〜の間」という、全然意味が違う(ように思える)訳がつく前置詞です。

これは、矢印をイメージするとわかりやすいです。

前置詞forのイメージ

for は、 before(前方)が由来の前置詞で、「あるところから前に向かった矢印」というイメージを表します。

forの後にくる語句の位置はそんなに厳密ではなく、「なんとなくその矢印方向にあるもの」ぐらいで捉えておくとよいです。

例題のfor文の場合、「AがBの中にある」という状態のはじまりからおわりまでの矢印の中に含まれているイメージでしょうか。

プログラムのfor文のイメージ

このような場合、日本語は「〜の間」と考えるとわかりやすそうです。

プログラム for day in week: に戻りましょう

例題のプログラム for day in week:は、ここまでの説明から、日本語にすると 「 dayがweekの中にある間 」となりました。だいぶわかりやすくなりましたね。

Pythonのfor A in B:は、AがBの中にある間、以下の処理を行ってねという意味の命令文だとわかります。

値を取ってきたあとの動きは、その下の行で指示をしてあげます。

for day in week:
    #ここより下にdayの値を取ってきたあとの動きを書きます。
    #今回はprintで1つずつ表示させています。
    print(day)

まとめ

今日の内容を日本語で書いてみましょう

f:id:nana_yu:20180521142057p:plain

この図を作っていて、英語圏の人にとっては、こういうメモをそのまま書けば動いてくれるのがPythonなんだなー、と改めて感心してしまいました。 そのような意味で、とてもPythonは可読性が高いのです。

とはいえそれぞれの動きを理解していればPythonは英語圏の人にとってだけ使いやすい言語というわけではありません。

プログラムのコマンドとして、「こういう動きのものだ」と覚えたあとは、やっぱりとても見やすいのがPythonだと思います。

英語が苦手でも、初心者の時に丁寧に理解していくことで、複雑な処理になってきた時にも活かしていけるのではないでしょうか。

PyQブログの更新は、SNSで告知しています。

リリース情報・PythonやIT全般のお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

https://twitter.com/pyqjptwitter.com

PyQ公式Facebook

PyQ

Pythonオンライン学習サービスPyQはこちら

pyq.jp

PythonのIndentationError: unexpected indent は何ですか?

f:id:nana_yu:20180502143157p:plain

f:id:nana_yu:20180316121637j:plain
大村 こんにちは、PyQサポートの大村です。今日のPythonお悩み解決は、IndentationError についてです。

インデントに関するエラーですが、Pythonを書き始めて一番目にするエラーの1つではないでしょうか。

質問

  File "1.py", line 4
    print('10です')
    ^
IndentationError: unexpected indent

このエラーの意味を説明して下さい。

元のコードです。

x = 10
if x == 10:
    print('xは、')
     print('10です')

回答

エラーの最後の行を見てみましょう。 IndentationError: unexpected indent と書いてあります。

IndentationError は、正しくないインデントが書かれた場合に発生する構文エラーです。

エラーの意味がわからない場合は Google翻訳 などの翻訳ツールに行ごと貼ってみましょう。

「IndentationError:予期しないインデント」となります。「予期しないインデント」とは、 インデントの位置が期待した状態になっていないという意味です。

今回のエラーが起きた原因はif文の中の処理の3行目の「print('xは、')」と、4行目の「print('10です')」のインデントが揃っていないことです。

if文などのスイーツ(ブロックとも呼ばれる)部分のインデントは揃える必要があります。インデントの空白の数は揃っていれば何個でもいいですが、PEP8 に準拠して半角スペース4つで揃えるようにしましょう。

おわりに

PyQドキュメントにはよく発生するエラーの解説があります。

Pythonのエラー解説 — Pythonオンライン学習サービス PyQドキュメント

また、内容がよくわからない場合は、翻訳ツールで翻訳する、エラー文を検索するなどで答えが発見できる場合があります。

PyQブログの更新は、SNSで告知しています。

その他リリース情報・Pythonお役立ち情報なども配信しています。 Python・プログラミング学習の情報に興味のある方は フォローしていただくと、最新情報をいち早く知ることができます。

PyQ公式Twitter

twitter.com

PyQ公式Facebook

PyQ

Pythonオンライン学習サービスPyQはこちら

pyq.jp

Copyright ©2017 BeProud Inc. All rights reserved.