2015年10月30日金曜日

Macでpython3の環境構築9---Scipyのインストール---

今回はScipyのインストールをする。

参考書として手元に置いてある『パーフェクトpython』では、gfortranとswig(とそれに必要なPCRE)というものを先にインストールしているようだが、ネット上ではswigをインストールしているものはあまり見かけなかった。

swigとはなにか調べてみると、pythonの中でC/C++を呼び出すためのライブラリのようだ。

特にswigは必ずしも必要ではないようだったので、とりあえずScipyだけインストールすることにした。

gfortranのインストール

ということで、まずはgfortranのインストールをする。
次のように打つ。
hiroshi-no-MacBook-Air:~ hiroshi$ brew install gfortran      #「brew install gfortran」と打ってreturnを押す。
するとこんなメッセージがでてきた。
GNU Fortran is now provided as part of GCC, and can be installed with:
  brew install gcc
gfortranはgccの一部として提供されている。brew install gccとすればインストールできます、と表示されているので素直に指示に従ってみる。
hiroshi-no-MacBook-Air:~ hiroshi$ brew install gcc      #  「brew install gcc」と打ってreturnを押す。
そうすると、処理が始まる。
==> Installing dependencies for gcc: gmp, mpfr, libmpc, isl
==> Installing gcc dependency: gmp
==> Downloading https://homebrew.bintray.com/bottles/gmp-6.0.0a.yosemite.bottle.
######################################################################## 100.0%
==> Pouring gmp-6.0.0a.yosemite.bottle.tar.gz
🍺  /usr/local/Cellar/gmp/6.0.0a: 15 files, 3.2M
==> Installing gcc dependency: mpfr
==> Downloading https://homebrew.bintray.com/bottles/mpfr-3.1.3.yosemite.bottle.
######################################################################## 100.0%
==> Pouring mpfr-3.1.3.yosemite.bottle.tar.gz
🍺  /usr/local/Cellar/mpfr/3.1.3: 24 files, 3.6M
==> Installing gcc dependency: libmpc
==> Downloading https://homebrew.bintray.com/bottles/libmpc-1.0.3.yosemite.bottl
######################################################################## 100.0%
==> Pouring libmpc-1.0.3.yosemite.bottle.tar.gz
🍺  /usr/local/Cellar/libmpc/1.0.3: 10 files, 380K
==> Installing gcc dependency: isl
==> Downloading https://homebrew.bintray.com/bottles/isl-0.14.1.yosemite.bottle.
######################################################################## 100.0%
==> Pouring isl-0.14.1.yosemite.bottle.3.tar.gz
🍺  /usr/local/Cellar/isl/0.14.1: 68 files, 3.2M
==> Installing gcc
==> Downloading https://homebrew.bintray.com/bottles/gcc-5.2.0.yosemite.bottle.1
######################################################################## 100.0%
==> Pouring gcc-5.2.0.yosemite.bottle.1.tar.gz
==> Caveats
GCC has been built with multilib support. Notably, OpenMP may not work:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60670
If you need OpenMP support you may want to
  brew reinstall gcc --without-multilib
==> Summary
🍺  /usr/local/Cellar/gcc/5.2.0: 1353 files, 248M
で、確認のためもう一度同じコマンドを打ってみる。
hiroshi-no-MacBook-Air:~ hiroshi$ brew install gcc      #「brew install gcc」と打ってreturnを押すと、、、
Warning: gcc-5.2.0 already installed       #  すでにインストールされてますよ、と出る。
gfortranのインストールはこれで完了。

Scipyのインストール

gfortranのインストールさえしてしまえば、あとはほとんどやることはない。

「pip3 install scipy」とするだけだ。
hiroshi-no-MacBook-Air:~ hiroshi$ pip3 install scipy      #  「pip3 install scipy」と打ってreturnを押すと下の行からの処理が始まる。
You are using pip version 7.1.0, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting scipy
  Downloading scipy-0.16.0-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (19.7MB)
    100% |████████████████████████████████| 19.7MB 19kB/s
Installing collected packages: scipy
Successfully installed scipy-0.16.0
「Successfully installed scipy-0.16.0」と出ているので無事インストール終了。

でもさ。少し疑問。

gccってXcodeをインストールしたときに一緒にインストールしなかったっけ?それとは違うのか?

わかる人いたらご教示ください。

2015年10月28日水曜日

csvファイルの扱い2---pythonを使って読み込み---

今回はpython3でcsvファイルを読み込む手順などについて書いていこうと思います

csvファイルの準備

前回、使用したファイルを流用して、次のようなcsvファイルを使うことにします。
#下の枠の中の内容だけをテキストファイルにかいて、名前を「(なんか適当な名前).csv」で保存する。ここでは、sample.csvにしてます。
3,2,7,8
5,11,1,5
13,4,2,3


csvファイルの読み込み(と表示)

まず、一番シンプルな、「読み込んで、内容を表示する」だけの処理は、もうすでにたくさんの他の人のブログやサイトなどでも紹介し尽くされているような気もしますが、こう書くそうです。
#  ややくどいというか、冗長な補足かもしれませんが、import csv以下の内容をテキストファイルに書いて、「(適当な名前).py」で保存。ここでは、一応「open.py」。そして、先ほど用意したsample.csvのファイルと今のopne.pyのファイルは同じフォルダ(ディレクトリ)に置いておく。

import csv
f = open("sample.csv")
reader = csv.reader(f)

for row in reader:
 print(row)

f.close()


先ほど用意したsample.csvのファイルと今のopne.pyのファイルは同じフォルダ(ディレクトリ)に置きます。
そしてターミナルにて、カレントディレクトリをsample.csvとopen.pyが置いてあるフォルダに移動します。
そうしたら、またターミナルで次のコマンドを打つとcsvファイルの中身が表示されます。

($のマークより前は中略・・・)$ python3 open.py    # 「python3 open.py」と打ってreturnを押す。
とすると、
['3', '2', '7', '8']
['5', '11', '1', '5']
['13', '4', '2', '3']

csvファイルの列だけ抽出

上の実行結果をみて推察されるように、csvファイルとして読み込むと、「各行を要素にもつリスト」として読み込まれます。(その各行それぞれもリストなわけですが。リストを要素にもつリスト、ということ)

いや、読み込まれます、とかいってますが、自分はあまりリストとイテレータの違いがよくわかっていません。
もしかしたら「イテレータとして読み込まれます」という表現が正しいのかも知れませんが、ここではとりあえずそのあたりには触れないようにします。
どなたか説明できる方がいれば教えてください。

なので、
import csv
f = open("sample.csv")
reader = csv.reader(f)

for row in reader:
    print(row[2])

f.close()

とすれば、実行結果は
7
1
2

となります。

言葉で表現するとやや紛らわしいですが、あえて表現してみると、「各行」がそれぞれリストの要素になっているわけですが(各行それ自体もリスト)、各行から3番目の要素を取り出す(くどいですが、誤植ではないです。3番目の要素。)という操作を各行に対して行う、という意味です。

readerオブジェクトの型と属性を調べてみる

上の部分で「「各行」がそれぞれリストの要素になっているわけですが」とか書いてますし、ネット上のドキュメントを読んでもそう書いてはあるのですが、書いてあるからと信用できないのが自分。

自分で確認できたことになるのかどうかすらも不明ですが、わからないなりにやるだけやってみました。

型を調べる

type関数を使うらしいです。

こんなコードを書いてみます。
import csv
f = open("sample.csv")
reader = csv.reader(f)

for row in reader:
 print(row)

print(type(reader))

f.close()

実行するとこうなります。

['3', '2', '7', '8']
['5', '11', '1', '5']
['13', '4', '2', '3']
     #この部分がtype関数に対する実行結果。


持っている属性を調べる

属性を調べるのはdir関数です。
先のコードに追加して次のようなコードにします。
import csv
f = open("sample.csv")
reader = csv.reader(f)

for row in reader:
 print(row)

print(type(reader))

for e in dir(reader):
 print(e)
f.close()

実行すると、次のようになります。
['3', '2', '7', '8']
['5', '11', '1', '5']
['13', '4', '2', '3']

__class__             #  この行より以下がdir関数に対する実行結果。
__delattr__
__dir__
__doc__
__eq__
__format__
__ge__
__getattribute__
__gt__
__hash__
__init__
__iter__
__le__
__lt__
__ne__
__new__
__next__
__reduce__
__reduce_ex__
__repr__
__setattr__
__sizeof__
__str__
__subclasshook__
dialect
line_num


代官山散歩♪

目的地がない状態でただただ散歩するより、目的地を決めつつも寄り道しながら散歩するのが好きです。

事情があり当日中に更新できなかったので、先日のことになりますが代官山を歩いてきました。

疲れてたため、お昼頃起きて、お昼を食べたあとコンタクトを買ってから代官山へ向かったので、夕方頃からの出発でした。

一応目的地はquadroというお店に行くことでした。洋服の下見をするためです。

以前、恵比寿でバッグを購入したときに系列店として紹介されていたお店です。

大手で買うのもいいけれど、セレクトショップというものも行ってみたいなと思っていたので、冬を前にして手始めに紹介されていた店に行こうとしていました。

特に理由はないのですが、バッグを購入した店が恵比寿にあったので、散歩も兼ねて恵比寿から歩いてみました。

そうすると、恵比寿から代官山近辺はお洒落なお店がたくさんありました。

独特の雰囲気をもっているお洒落な街でした。銀座もお洒落だけど、それとはまた違う雰囲気です。

歩いている人たちも洗練されていました。

高級感があるけど、居づらくないというか。もっと落ち着いた雰囲気といったところでしょうか。ここに住んでみたい〜!!

蔦屋書店の場所もどこにあるか知らなかったのですが、今日たまたま前を通って場所を知りました。

個人的に気になったのはと紅茶専門店のルピシアという店とCarbootsという洋服屋さんとJay Haideというブランドを扱っているバイオリン屋さん?です。

Carbootsはたまたま前を通っただけで、どんな服を売っているのか全然みてはいませんが、帰って調べてみたら女性向けの洋服屋さんなのか。。。?

セレクトショップがかなりたくさんあることを発見したので、今日は夕方からだったのであまり見て回れませんでしたが、時間のあるときにまた来てみたいです。

2015年10月11日日曜日

英検を受けてきました。

今日は英検を受けに行ってきました。

2級。レベル的には、高校卒業程度ってことらしいので、今更な感ありますが。

でも実際、会場は年齢問わずいろんな人がいました。

中学の時に3級を取って以来、全く受けておらず。資格とかもなにもないので、手始めに受けてみようかなと思って受けてみました。

今回、本当に特に英検に特化した対策はなにもせずに行きました。
普段から多読は行っているし、TOEFL対策などはガッツリやったこともあるので、その状態でどんな感じになるのか試してみました。

想像してたよりは簡単でした。想像してたよりは、ですが。

もっと手も足もでないかと思ってました。

今回合格しているかどうかは微妙な手応えですが、もし落ちていたとしても次回十分に対策をすればいける気がしました。

ところどころ、意味があやふやな単語もちらほらあったので、そこは今後の課題ですね。

ちなみに、今月はTOEICも受ける予定。今更特化した対策はするつもりはないですが、英語には触れていようと思います。

2015年10月7日水曜日

csvファイルの扱い1---スプレッドシートやExcelとの絡みにて---

csvファイルについて調べたことを書いてみようと思います。

もともとの目標は、pythonなどのプログラミング言語でcsvファイルを扱う方法について調べようと思っていたのですが、もう少し基本的なことまで遡ってcsvファイルの扱い方について調べてみました。

csvファイルとは

そもそもなんなのか、という部分については検索すれば丁寧な解説がたくさんでているので、そちらへ譲ります。

要するに、windowsでいえばメモ帳、Macでいえばテキストエディタとかに書かれていて、カンマで区切られて書かれている

こういうファイルです。

これを、例えばExcelとか、もともとは表形式で作成したデータを、テキストファイル形式にして、他のアプリケーションとやりとりをしやすくします。

表形式のデータだと、ExcelとExcelの間のやりとりなら、まだいいとしても、他のソフトとやりとりをしようと思うと、ファイルの形式が合わず、うまくいきません。

データそのもの(つまりExcelの場合でいえば、各セルに入力されているデータ)以外にも、体裁を整えるための余分なデータがくっついてしまっているので。

で、データの基本的な部分だけ残して作ったものが、csvファイルです。

スプレッドシート→csvファイルの作成

Excelをあまり使ったことがないのでわかりませんが、おそらくExcelでも基本的には同じだと思います。

ここでは、Googleドライブのスプレッドシートからcsvファイルを作成します。

サンプル用のデータとして、次のようなデータを用意します。




データを作成したら、画面左上の「ファイル」をクリックし、「形式を指定してダウンロード」→「カンマ区切りの値(.csv、現在のシート)」を選んでクリックします。



クリックをすると、すぐにダウンロードされます。

普段ダウンロードされたデータが入る場所をみると、「.csv」のファイルができています。

今はMacを使っているので、「ダウンロード」というフォルダの中に入りました。

そのままcsvのデータを開くと、Excelとかデフォルトで指定されているソフトで開かれてしまうと思うので、どのソフトで開くかを指定します。

Macの場合であれば、


ここをクリックすると、


「このアプリケーションを開く」にマウスを合わせ、


「テキストエディタ」をクリックします。

そうすると、テキストエディタで

このように書かれたデータが表示されます。これがcsvファイルです。

csvファイル→スプレッドシート

具体的な操作手順に関してはいろいろあると思いますが、今回は次のような方法でいきます。

新規にスプレッドシートを開き、画面左上のメニューから「インポート」を選びます。



新しく出てくる画面で、アップロードを選び、画面の指示通り、該当のファイルを直接ドラッグするか、パソコンのから該当のファイルを選んで指定します。

そうすると、左下の「選択」のボタンが押せるようになるので、クリックします。


そうすると次のような画面がでます。




ここで操作を選びます。

インポート操作のところは、
  • 新しいスプレッドシートを作成する
    →今開いているスプレッドシートとは全く別に新規にスプレッドシートを開き、そこにcsvファイルを読み込み。

  • 新しいシートを挿入する。
    →現在開いているスプレッドシートで、新しいシートを追加し新しく追加したシートにcsvファイルを読み込み。

  • スプレッドシートを置き換えする。
    →現在のシートにそのままcsvファイルを流し込む。(それ以下の三つと混同しやすい表現ですが。。。)
それ以下三つの選択肢はやや説明が面倒なのでしません。

区切り文字の方は、文字通り「データの区切りの記号はなににしているか」です。
ここは「自動的に検出する」か、「カンマ」にします。csvですのでね。

「タブ」もあるのは、世の中にはcsv(Camma Separeted Value)に対して、「タブ」で区切られてるtsv(Tab Separated Value)なるものもあるからです。

それで読み込みをすると、こうなって無事読み込めます。




ちなみにcsvファイルを読み込むのに、区切り文字に「タブ」を選択すると、次のようになります。



これは、区切り文字は「タブ」と指定しているので、「タブ」がデータの区切りになっているわけです。

つまり、タブが現れるまでは一塊のデータです。

一方、csvと同じように改行コードがくれば、行が変わります。

csvファイルをtsvとして読み込むと、タブが来る前に改行コードが来ているので、一行目が、丸々ひとつのデータをして扱われ、改行コードにて次の行に読み込まれているわけです。

次回は、csvをpythonやCで扱う方法について書いてみようと思います。