2019年6月23日日曜日

Pythonでの文字列の検索

Pythonで文字列を検索する関数のご紹介です。


movie_title = "A Whole New World"

# 指定した文字が出現する回数を返す
print(movie_title.count('W'), movie_title.count('A'))
# => 2 1

# 文字列中に指定した文字がある場合に、該当する最小のインデックスを返す
# ただし、文字列が見つからない場合は、-1を返す
print(movie_title.find('N'), movie_title.find('W'), movie_title.find('X'))
# => 8 2 -1

# 文字列中に指定した文字がある場合に、該当する最大のインデックスを返す
# ただし、文字列が見つからない場合は、-1を返す
print(movie_title.rfind('N'), movie_title.rfind('W'), movie_title.rfind('X'))
# => 8 12 -1

# 先頭の文字列が、指定した文字列で始まるか否かを真偽値で返す
print(movie_title.startswith('A'), movie_title.startswith('X'))
# => True False

# 先頭の文字列が、指定した文字列で終わるか否かを真偽値で返す
print(movie_title.endswith('A'), movie_title.endswith('X'))
# => False False

# 文字列中に指定した文字がある場合、該当する最小のインデックスを返す
# ただし、文字列が見つからない場合は、例外を発生させる
print(movie_title.index('N'), movie_title.index('W'), movie_title.index('X'))
# => ValueError: substring not found

# 文字列中に指定した文字がある場合、該当する最大のインデックスを返す
# ただし、文字列が見つからない場合は、例外を発生させる
print(movie_title.rindex('N'), movie_title.rindex('W'), movie_title.rindex('X'))
# => ValueError: substring not found

# 指定した文字列が、検索対象の文字列に含まれているか否かを調べる

print('World' in movie_title,"Sekai" in movie_title)
# => True False

以上です。

2019年6月22日土曜日

Pythonの文字列操作

Pythonでの文字列操作まとめです。

movie_title = "A Whole New World"

# 最初の文字を大文字に変換
print(movie_title.capitalize())

# 全部の文字を小文字に変換
print(movie_title.lower())

# 大文字を小文字に変換し、小文字は大文字に変換
print(movie_title.swapcase())

# 大文字から始め、残りの文字は全て小文字に変換
print(movie_title.title())

# 大文字に変換
print(movie_title.upper())

Jupyter notebookで動かすとこんな感じです。



以上です。

2019年6月20日木曜日

Watson Studioの「Data Refinery」機能で「馬の疝痛(せんつう)」データを眺めてみた。

IBMの「Watson Studio」に含まれている「 Data Refinery」機能を使ってみました。
データプロファイルの視覚化などが、こんな感じで数クリックで出来ちゃいます。


※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。  

「Data Refinery」とは?


概要:
Watson StudioとWatson Knowledge Catalogから使用可能なData Refineryツールは、膨大な量の生データを、利用可能な品質の高い情報に素早く変換してすぐに分析できる状態にすることにより、データ準備時間を節約します。

機能:
・データの分析と変換
・データのプロファイル作成と視覚化
・あらゆる場所にあるデータへの接続
・ガバナンスされたセルフサービスのデータ準備
・ジョブの実行のスケジューリング
・サーバーレスでの実行

(参考)

サンプルデータについて


今回は、馬の「疝痛(せんつう)」に関するオープンデータを用います。

疝痛(せんつう)とは?
疝痛(せんつう、colic)とは腹部臓器の疼痛およびそれに伴う腹痛を示す症状名。馬ではその解剖学的、生理学的特徴から多発する。以下では主に馬について記述する。馬で多発する原因として、胃が体躯に比べ小さいために嘔吐しにくい構造であること、腸間膜(mesentery)が長く固定されていないこと、巨大な盲腸をもつことなどが挙げられる。
(Wikipediaより)

ちなみに、1997年に皐月賞と日本ダービーを制した名馬「サニーブライアン」なども疝痛で命を落としていまして、お馬さん業界の中では結構メジャーで怖い病らしいです。


<サンプルデータの入手・加工方法>
1.UCIのサイトからデータをダウンロード
下記サイトからローデータをダウンロードしてください。上段にある「Download: Data Folder」をクリックするとローデータが表示されます。また、当ページの下部には各データ列の詳細についての解説もあるので、後ほどデータ形式の指定時に参照します。
ちなみに、欠損値も30%ほど入っているので、置換ノードによるデータ加工のお勉強としても活用そうですね。 


2.CSV形式で保存
早速データを保存しようと思ったのですが・・・。うーん、CSV形式等でもあると楽なんですけどね^^; 

このまま取り込んでも何とかなるのですが、面倒なのでエディタなどで半角スペースを「,(カンマ)」に全置換してCSV形式で保存しました。

「Data Refinery」での視覚化手順


1.「New Project」の作成
画面右上の「New Project」を押して、新規にプロジェクトを作成してください。


2.「Standard」を選択
「Standard」を選択し、プロジェクトを作成してください。


3.プロジェクト名称を入力
「Name」欄に判別しやすいプロジェクト名称を入力してください。
複数名での共同作業を行う場合は、Descriptionに何か説明を書いた方が良いと思います。
ちなみに、当プロジェクトは、画面右側に表示されている「COS(Cloud Object Storage)」に保存されます。


4.プロジェクトに追加する
すぐに下記画面が表示されるので、右上の「Add to project」を選択します。


5.「Data」を選択
プロジェクトに追加可能なAsset一覧が表示されます。この中から「Data」を選択してください。今回は触れませんが、Web上でPythonが実行可能なJupyter notebookなども追加可能です。


6.CSVファイルをアップロード
画面右上のエリアに、当エントリー冒頭でご紹介したCSVファイルをドラッグ&ドロップしてください。「browse」のリンクからファイル指定も可能です。


7.「Refine」を選択する
CSVファイルのアップロードが終わりましたら、「Asset」タブから「Refine」を選択してください。


8.Refinery画面が表示される
Refinery画面が表示されます。こちらは、スプレッドシートライクな「Data」タブ画面です。


「Profile」タブではデータの概要が簡易的に把握可能な頻度グラフなどが表示されます。
「?」は、このサンプルデータに含まれる欠損値です。


そのほか、「Visualizations」にはデータ形式に合わせて豊富なグラフを選択することが出来ます。




このような高度な可視化が、数クリックだけで出来ちゃいます。
全く素性のわからないデータなどを受領した場合、まず、このツールでチェックするのもアリですね。

次回も、Watson Studioの機能をご紹介させて頂きます。




2019年6月16日日曜日

condaコマンドによるAnacondaの仮想環境作成

前回、Anaconda導入を行いました。

macOS MojaveへのAnacondaインストール

今回は、macOS環境でcondaコマンドによるAnacondaの仮想環境作成を行います。
condaコマンドは、Anacondaの環境構築に用いるコマンドラインツールです。

実施環境は、以下の通りです。

・MacBook Air:CPU:1.6GHz,Memory 8GB
・macOS Mojave ver10.14.5


作業手順



まず、ターミナルに入り、ご自分のPythonのバージョンをご確認ください。
Desktop $ python --version
Python 3.7.3

下記コマンドを入力してください。「jupyternote-env」部分は何でもOKですが、あとでわかりやすい名前にしてください。
python=」以降は、ご自分のPythonのバージョンに合わせて書き換えてください。
Desktop $ conda create -n jupyternote-env python=3.7.3

コマンドを入力すると、「こんな内容でインストールするけどいい?」的なメッセージが
表示されます。
Collecting package metadata: done
Solving environment: done

## Package Plan ##

  environment location: /Users/[ユーザー名]/anaconda3/envs/jupyternote-env

  added / updated specs:
    - python=3.7.3


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2019.5.15  |                0         133 KB
    openssl-1.1.1c             |       h1de35cc_1         3.4 MB
    pip-19.1.1                 |           py37_0         1.8 MB
    setuptools-41.0.1          |           py37_0         635 KB
    sqlite-3.28.0              |       ha441bb4_0         2.3 MB
    wheel-0.33.4               |           py37_0          39 KB
    ------------------------------------------------------------
                                           Total:         8.3 MB

The following NEW packages will be INSTALLED:

  ca-certificates
  certifi
  libcxx
  libcxxabi
  libedit
  libffi
  ncurses
  openssl
  pip
  python
  readline
  setuptools
  sqlite
  tk
  wheel
  xz
  zlib

Proceed ([y]/n)?

問題なければ y を入力し、enterキーを押してください。
下記のようなメッセージが表示れると完了です。
Downloading and Extracting Packages
setuptools-41.0.1    | 635 KB    | ######################################### | 100%
sqlite-3.28.0        | 2.3 MB    | ######################################### | 100%
wheel-0.33.4         | 39 KB     | ######################################### | 100%
openssl-1.1.1c       | 3.4 MB    | ######################################### | 100%
pip-19.1.1           | 1.8 MB    | ######################################### | 100%
ca-certificates-2019 | 133 KB    | ######################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate jupyternote-env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

今作った仮想環境をアクティベートします。「jupyternote-env」は、ご自分の環境名に
書き換えてください。
Desktop $ source activate jupyternote-env

下記のように表示されれば成功です。
(jupyternote-env) Desktop $

次に、この仮想環境に入れたいサードパーティ製パッケージをインストールします。
==以降の部分は、都度、組み合わせでの動作確認が取れているバージョンを記載してください
conda install -y jupyter==x.x.x
conda install -y notebook==x.x.x
conda install -y pandas==x.x.x
conda install -y matplotlib==x.x.x

あとは、お好きなところに作業ディレクトリを作成し、Jupyte Notebookを起動します。
(jupyternote-env) ~ $ mkdir jupyter_notebooks
(jupyternote-env) ~ $ cd jupyter_notebooks/
(jupyternote-env) jupyter_notebooks $ jupyter notebook

やった!起動したっ!





2019年6月15日土曜日

macOS MojaveへのAnacondaインストール

先日、macOSを再インストールした際、Python学習のために「Anaconda」を入れ直したので、手順を軽くご紹介します。
とはいえ、ほぼ「ボタンポチポチ系」の作業です。

実施環境は、以下の通りです。

・MacBook Air:CPU:1.6GHz,Memory 8GB
・macOS Mojave ver10.14.5


そもそも「Anaconda」ってなに?


一言で言うと、「Pythonにおけるデータ分析に関連するライブラリ群を簡単に導入可能なPythonディストリビューション」です。

NumPy・scikit-learn・Matplotlib・Bokehなど、Pythonで主要なデータ分析系ライブラリを初心者でも容易に導入することが出来ます。



「Anaconda」のインストール手順


1.macOS用:Anacondaインストーラーの入手
下記サイトからAnacondaのインストーラーをダウンロードしてください。
Pythonには、「2.7系」と「3.7系」がありますが、よほどのことがない限り、「3.7系」を選んでください。
ちなみにデータサイズは637MBありました。

https://www.anaconda.com/distribution/


















2.インストーラーを起動する
直接開いても、ローカルにファイル保存してからでもOKです。



3.表示内容を読んで「続ける」
数画面は特に迷うことなく、「続ける」で進めます。






4.インストール先を変更
「インストール先を変更」ボタンを押してください。





5.「自分専用にインストール」を選択
「自分専用にインストール」を選択し、「続ける」を押してください。





6.「インストール」実行
「インストール」ボタンを押します。
この後、インストールプログラムが走りますので、完了までしばらく待機です。






































7.インストール完了!
ほとんど「続ける」ポチポチで完了です!





















8.「Anaconda Navigator」起動
ファインダーから「アプリケーション」を選択し、「Anaconda Navigator」を起動すると、いろんなオモチャがギッシリ♪
















以上です。

2018年1月27日土曜日

「尺度」のおさらい

SPSS Statisticsなどで尺度設定していると、「あれ、これってどっちだっけ?」と未だに迷うことがあります。
皆さんご存知だと思いますが、備忘録がわりにまとめておきました。

「4つの尺度」の定義と例

 データの尺度には、以下の4つがあります。
SPSSなどの分析システムにおいて、分析方法によって設定すべき尺度が異なります。

<質的変数>

1.名義尺度:
・測定値の間に順序も間隔もない尺度。単に測定値を区別するために用いる。
・測定値は、性質や属性を表すカテゴリ。
 ex.(性別)男性/女性、(購入経験)あり/なし、(好意)好き/どちらとも言えない/嫌い
   (好きな野球チーム)ジャイアンツ/タイガース/カープ/ドラゴンズ/DeNA/ヤクルト
     (職業)公務員/会社員/主婦(夫)/学生 等


2.順序尺度:
・測定値の間に大小または前後の順序はあるが、その間隔の大きさに意味はない尺度。
・人間の感覚によってつけられている値。
ex.(服の大きさ)S/M/L、(成績)優/良/不可、(震度)5/4/3/2/1、(賛否)賛成/どちらでもない/反対


<質的変数>

3.間隔尺度
・測定値の大小関係による「順序性」と、測定値間の「等間隔性」がある尺度。
・「順序性」は、気温の場合、10度より20度の方が暑いといった測定値の大小が判別できる状態。
・足し算、引き算が可能。
※ただし、20度の方が10度の2倍暑いとは言うことができない。
・「等間隔性」は、10度〜20度と、20〜30度の差は同じといった、数値間の差が等しいことが判別できる状態。
ex.気温、西暦、pH、評価点(0~100)、


4.比率尺度
・測定値間の「順序性」と「等間隔性」に加え、「等比性」がある尺度。
・「0が原点」であり、間隔と比率に意味がある。ほとんどの物理的測定値が該当する。
・例えば、時速10kmより30kmの方が早く(順序性)、時速10km/20km/30kmの間隔は10kmで等しく(等間隔性)で、10kmの3倍は30kmといった「等比性」もある状態。
ex.速度、重量、身長、時間、運動エネルギー

一覧表にまとめると、こんな感じです。

2018年1月21日日曜日

salesforce(SFDC)事始め〜環境準備から初期設定まで

salesforce(SFDC)のお勉強を始めることになりました。
今回は、環境準備から初期設定まで記載します。

前提環境は下記となります。
・salesforceバージョン:Version 18
・Edition:Developer Edition


(1)「Developer Edition」準備


・まずは、SFDC Service Cloud研修受講時に使えた環境もあったのですが、期限切れになったので、新たに「Developer Edition」環境を準備します。
・最初、勘違いして「30日間フリートライアル」の方を触っていたのはナイショです。。


「Developer Edition」サインアップページ
無料期間無制限
・アプリケーションを無償で開発するための下記機能が有効化済み。
    ・Apexプログラミング言語
    ・VisulaforceによるUIのカスタマイズ及びコントローラ
    ・Force.com WebサービスAPI(REST及びSOAP)などの様々な機能 等
・salesforce.comのプロダクトライセンス含む

詳細については、下記URLをご覧ください
Force.com Developer Edition組織について
https://developer.salesforce.com/page/JP:Developer_Edition

環境(Environment)の概要
※各Editionの記載が「開発環境に関するベストプラクティス」に一覧化されています。
https://developer.salesforce.com/page/JP:An_Introduction_to_Environments

(2)初期設定の変更


1.Salesforce Classic UIへの変更
現代的でイケてるUIの「Lightning Experience」がデフォルトになっていますが、まだ発展途上らしいので、簡素でわかりやすい「Salesforce Classic」UIに変更します。
手順は、下記をご参照ください。
※Classic切り替え後も、画面上段にある自分の名前が表記されたプルダウンから「Lightning Experienceに切り替え」で元に戻せます。

Lightning Experience 導入後も Salesforce Classic は使用可能
https://help.salesforce.com/articleView?id=lex_switching_uis.htm&type=5


2.Chatterプロファイルの編集
いくら「お勉強」とはいえ、このままデフォルト表示で使い続けるのも寂しいので、自分用のプロファイルに書き換えます。
    a.画面上段にある自分の名前が表記されたプルダウンから「私のプロファイル」を選択。
    b.「連絡先」右横の鉛筆アイコンをクリック。
    c.「情報」タブで下記情報を入力します。
     -名
     -姓 *
     -ニックネーム
     -役職
     -マネージャ
     -自己紹介

     「連絡先」タブで下記情報を入力します。
     -メール *
     -勤務先電話番号
     -携帯電話
     -Fax
     -住所
     -市区郡
     -都道府県
     -郵便番号
     -国
 *は必須入力欄です。
    d.写真にカーソルオーバーさせると「更新/削除」のテキストが表示されるので「更新」を押してご自分の写真に変えてください。


3.Chatterのメール通知オフ
 今後、様々なオペレーションを行うたびにメール通知が来ると鬱陶しいので、メール通知をオフにします。
    a.画面上段にある自分の名前が表記されたプルダウンから「私のプロファイル」を選択。
    b.「私の設定」をクリック。
    c.左側の「Chatter」→「メール通知」をクリック。
    d.「一般情報」の「コミュニティ活動のメール通知を有効化」のチェックボックスを外す。
    e.「保存」ボタンを押します。


4.「メールの署名」設定
 作業上、必須ではありませんが、「メールの署名」を変えておきます。
    a.画面上段にある自分の名前が表記されたプルダウンから「私のプロファイル」を選択。
    b.「私の設定」をクリック。
    c.左側の「メール」をクリック。
    d.「私のメール設定」で「メールの署名」に自分のメール署名を記載する。
    e.「保存」ボタンを押します。


以上です。
次回は、もう少し実用的な使い方を記載したいと思っています。