空飛ぶチンアナゴの統計解析日記

統計解析を嗜むチンアナゴのメモ帳です

CS6をインストールするにはオフラインじゃないとだめなのか?

adobeの買い切り最後のバージョンであるCS6を10年経った今でもシコシコと使い続けている。
もちろん金がないからである!
とはいえadobe以外の環境がどんどん進歩していく中でさすがに古いOSをいつまでも使うわけにもいかず仕方なくネイティブ環境としてEl Capitanを入れたMac mini Late 2012を用意しつつもParallelsを使ってMavericks環境を作ろうとしたわけだ……El Capitanよりもちゃんと動く(らしい)からね。

インストールまで無事完了なんだけど

ここはもうマニュアル通りにParallelsをわざわざMavericksを動かすためだけに買った16インチMacBook Pro 2.3GHz 8コアIntel Core i9*1にインストールする。
Mavericksはもともと持っているのでそのまま普通にインストールファイルをダウンロードしてParallels環境にインストールする。
CS6もadobeのサイトから普通に落とす。
で、インストールして認証しようとすると認証サーバーに接続ができない。困った。

オフライン認証も一筋縄ではいかない

www.maclab.biz
だいたいこんな感じで進めるんだけど、「www.adobe.com/go/getactivated_jp」というアドレスが死んでいる。
新しい認証アドレスは公式のhelpに書いてあるのでそっちを参考に認証すると無事に認証ができた。
helpx.adobe.com

現状

とりあえず無事に起動はしている。
現状まだ写真をいじったり諸々はしていないのでこれから徐々に移行環境でのテストを進めていくつもり。

とりあえずフォント類をまたインストールするがとてもダルいのでなんとかしたい(切実)

*1:IntelのCPUじゃないと動かない

create mediaを使ったインストールUSBメモリーの作り方

諸事情でEl Capitanのディスクを作らないといけなくなったので覚書。

support.apple.com
基本的にはこの手順でやればいいんだけど、メインのSSDの残り容量の都合、applicationフォルダーにインストーラーを置けなかったりと色々トラブルがあったため少し変えたりしたのでそのあたりのメモも兼ねている。

1. createinstallmediaコマンドによるメモリーの作成

sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app

この通りターミナルに打ち込めばいいんだけど、問題はインストールメディアのpathがこれと一致しない。
インストールメディアのパスを変えるときは

sudo /インストールメディアがあるフォルダーまでのpath/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /インストールメディアがあるフォルダーまでのpath/Install\ OS\ X\ El\ Capitan.app

とする必要がある。
またインストールするファイル名が「OS X El Capitanインストール」と日本語上では見えるが、ファイル名はそのままで問題ない。

2. 日付関係の調整

komugikotan.hatenablog.com
のあたりを参照。
「sudo date -u 0101010116」みたいな入れ方をするサイトもあるけど、sudoがないとエラーが返ってくるため、こちらのサイトのように「date 0101010116」といれること。
これ以外のエラーはうちは出なかったので後は知らん。

まとめ

とりあえず無事にインストールまで完了。
あとは色々ソフトをインストールすれば構築作業は完了予定。

手順のコツさえつかめば割と簡単にできるのでどうしてもJava 6を残さないといけないとかそういう縛りがある人間はぜひ挑戦してみてほしい。

続・SQLサーバーにcsvファイルを楽して読み込みたい

前回のおさらい

SQLサーバーにcsvファイルを読み込むためには
1)あきらめて直接コンソールを叩いてちまちま読み込む
2)テーブルを作成して1行ずつループで読み込ませる
のが一番無難で楽

……だと思っていた。

pandasは強い(強い)

pandas.pydata.org
pandasのto_sql()関数を使うとあっという間にデータベースに転送できる。
実際、

from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)

df = pd.DataFrame({'name' : ['User 1', 'User 2', 'User 3']})

df.to_sql('users', con=engine)
([https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html:title] より)

というステップで読み込めてしまうのでとても簡単。

とはいえ欠点もある

データの型の問題

欠損値を含むデータの場合、少しめんどくさいことになる。
古いpandasを使っている場合、欠損値numpy.nanが含まれるデータはすべてすべてfloatとして扱われる*1。なので、numpy.nanを含むデータフレームを読み込ませる際には整数型のデータでもすべてfloatとして処理されてしまう。
また、tableに挿入する際は、データフレームの型が優先される。
例えば

sql = """
create table table1 (
    id int,
    name varchar(18),
    age int
)
cur.execute(sql)

と設定したとしても、データフレームのageのデータフレームの方がfloatだった場合、tableの方のageの型もfloatに変換される。
もっとも、create tableで表を作る必要性もないので、そのままto_sqlでデータサーバへ格納してしまうのが一番楽といえば楽なのだが……。

行数が膨大な時は時間が掛かる

qiita.com
うちは行数が1500万もないので多分そこまでひどくはならないだろうけど、ちょっと気をつけないといけないかも。

まとめ

なんだかんだでpandasでやるのが楽。
特に行数がそこまで多くなければpandasを使って全部クリーニングからデータサーバーへの格納まで一通りやってしまうのが一番手っ取り早いように思える。

そういえば

ecs.toranoana.jp
サークル電脳世界のオーニシさんの新刊が出ていたので発注したのであった。
ある程度プログラマーではない人に作業を押し付けようと思うとどうしてもGUIを作る必要があったりするので、しっかり読み込んで勉強したいと思います。

日本の大学のpython教材

大学が公開してるのpythonの教材をまとめてみた。
とりあえず国内の大学で把握しているのはこれだけ。他見つけたら適時追加していきます。

東京大学 Pythonプログラミング入門

utokyo-ipp.github.io
東京大学python入門
どちらかというとpythonの基本的な理解がメインで、pythonでこれから何か計算をするための土台として使い勝手が良い。

京都大学

https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/265459/1/Version2021_10_08_01.pdf
pythonプログラミング演習がこちらはpdf形式で公開されている。
本編とは別にコラム編が別途公開されているのでこちらも読み物として大変面白い
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/265459/2/Version2021_10_08_02.pdf

東京工業大学

chokkan.github.io
chokkan.github.io
入門編と機械学習をテーマにした方の2部構成。
こちらは最近togetterの方でも話題になりましたね。
togetter.com

STATAとpythonの共同作業

先週の木曜日と金曜日にあったSTATAのセミナー、なかなかpythonとの共同作業という新しいテーマなだけに興味深かったんだけどだいたい深夜でいつも起きれずと。
とりあえず、木曜日のセミナーのレコーディングは来たので、金曜日もセミナーのレコーディングが来たら通しでゆっくり眺めようと思います。