CUBE SUGAR CONTAINER

技術系のこと書きます。

Python: pandas の DataFrame から不要なカラムを削除する

今回は pandas の DataFrame オブジェクトから不要なカラムを取り除く方法について書く。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.3 BuildVersion: 17D102 $ python -V Python 3.6.4 下準備 まずは環境に pandas を…

Python: pandas で欠損値の有無を調べる

今回はかなり小ネタだけど pandas の DataFrame オブジェクト内に欠損値を含むカラムがあるか調べる方法について。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.3 BuildVersion: 17D102 $ python -V Python 3.6.4 $ pip …

Python: pandas で対応関係を渡して値を変換する

例えばデータセットの中のカラムが文字列型なんかで入っていると、それを数値に直したくなることはよくあると思う。 今回はそれを pandas でやる方法について書く。 結論から先に書くと Series オブジェクトにある map() メソッドを使うと上手くいく。 使っ…

Python: pandas で特定の値がいくつあるか数える

今回は pandas で特定の値がいくつ数える方法について。 結論から先に書いてしまうと value_counts() という専用のメソッドがあるよ、という話。 使った環境は次の通り。 $ python -V Python 3.6.4 $ pip list --format=columns | grep -i pandas pandas 0.2…

PySpark のスクリプトファイルで引数を扱う

今回は Apache Spark の Python インターフェースである PySpark について。 PySpark では定型的な作業についてはスクリプトファイル (*.py) にまとめて spark-submit コマンドで実行することになる。 その際に、動作に必要な引数をさばく方法について。 結…

PySpark の DataFrame を SparkSQL で操作する

Apache Spark には SQL の実行エンジンが組み込まれていて、そのインターフェースは SparkSQL と呼ばれている。 この機能を使うと Spark で主に扱われるデータ構造の DataFrame オブジェクトを SQL で操作できる。 今回は PySpark から DataFrame を SparkSQ…

Apache Hive の Vectorization 機能を試す

今回は Apache Hive の Vectorization 機能を使ってパフォーマンスが向上するか試してみる。 Apache Hive では、通常 HDFS に保存されたデータを一行ずつ処理する。 それに対し Vectorization 機能を使うと、状況は限られるものの複数行をまとめて処理できる…

Apache Hive で圧縮形式のデータを扱う

Apache Hive のテーブルを構成するデータは、デフォルトでは無圧縮になっている。 しかし、設定を変更することで圧縮形式のデータも扱うことができる。 そこで、今回は Apache Hive で圧縮形式のデータを扱ってみることにする。 データを圧縮することには、…

Docker コンテナのログを syslog でリモートホストに飛ばす

今回は Docker コンテナのログを syslog で別のホストに飛ばしてみることにする。 言うまでもなく、ロギングはシステムを運用する上で欠かせない要素の一つ。 Docker には、あらかじめ複数のロギングドライバが組み込まれていて、それらを使い分けることがで…

split コマンドでファイルを分割する

巨大なファイルを扱おうとすると、環境によってはクォータなどの影響を受けて取り回しが悪いことがある。 今回は、そんなときに split コマンドで一つのファイルを複数にばらして扱う方法について。 ここでは macOS を使ったけど GNU/Linux でも同じやり方が…

Apache Hive を HiveServer2 経由で操作する

Apache Hive を操作する方法としては、以前から hive というコマンドラインツールが提供されている。 ただ、この方法だと hive コマンドがインストールされたホストでしか Apache Hive を操作できない。 また、Hadoop エコシステムを形成する別のソフトウェ…

Apache Hive のメタストアに MariaDB を使う

Apache Hive はテーブルのスキーマ定義などメタデータを RDBMS に保存する。 デフォルトでは Java で書かれた組み込み RDBMS の Apache Derby が使われる。 今回は、その Apache Derby の代わりに MariaDB (MySQL) を使う方法について。 使った環境は次の通…

まっさらな状態から Docker イメージを作る

Docker イメージというと、一般的には既存の Docker イメージをベースにして作る機会が多い。 そうしたとき Dockerfile にはベースとなるイメージを FROM 命令で指定する。 とはいえ、既存のイメージをベースにしない、まっさらな状態からイメージを作ること…

Python: memory_profiler でプログラムのメモリ使用量を調べる

今回は memory_profiler というモジュールを使ってプログラムのメモリ使用量を調べる方法について紹介する。 pypi.python.org このブログでは、以前に Python のプロファイラとして profile/cProfile や line_profiler について書いたことがある。 これまで…

PySpark の UDF (User Defined Function) を試す

今回は PySpark の UDF (User Defined Function) 機能を使ってみる。 UDF というのはユーザが定義した関数を使って Spark クラスタで分散処理をするための機能になっている。 柔軟に処理を記述できるメリットがある一方で、パフォーマンスには劣るというデメ…

Docker コンテナの動作に必要な設定を起動時に渡す

今回は Docker コンテナを起動するタイミングで、コンテナの動作に必要な設定を受け渡す方法について書く。 やり方としては、大まかに分けて「環境変数を通して渡す」と「コマンドライン引数を通して渡す」という二つがある。 どちらの場合も docker run で…

Docker のホストとコンテナ間でファイルをやり取りする

Docker ホストとコンテナの間でファイルをやり取りするのって以前はかなり面倒だったと思う。 そんな記憶も今は昔、専用のコマンドが用意されてだいぶ簡単になっているようだ。 docker cp | Docker Documentation 使った環境は次の通り。 $ sw_vers ProductN…

PySpark: Jupyter Notebook からローカルの PySpark ドライバを操作する

今回はローカルで動作している PySpark のドライバプログラムを Jupyter Notebook から操作する方法について。 ようするに Jupyter Notebook と PySpark (のドライバ) が同じマシン上で動く場合ということ。 この場合の設定内容はとてもシンプルで、環境変数…

PySpark: 時刻と文字列を相互に変換する (DataFrame / Spark SQL)

今回は Apache Spark のインターフェースの一つである PySpark で時刻と文字列を相互に変換する方法について扱う。 PySpark にはいくつかの API があるけど、その中でも DataFrame と Spark SQL を使った方法について紹介する。 使った環境は次の通り。 $ py…

Apache Hive を使ったテーブルのサンプリング

Apache Hive では、大規模なデータセットに対してクエリを実行すると完了までに長い時間がかかる。 そこで、全体から一部を抽出した標本に対してクエリを実行する場合がある。 今回は、その標本を抽出する方法 (サンプリング) について扱う。 使った環境は次…

情報処理安全確保支援士試験に合格した

お仕事でセキュリティ関連のデータセットも扱う機会が出てきたので、勉強がてら受けてみた。 今回は、受験に関する諸々について書き留めておく。 情報処理安全確保支援士試験について 情報処理安全確保支援士試験というのは、旧情報セキュリティスペシャリス…

Apache Hive の MAP 型を試す

前回に引き続き Apache Hive の複合型の一つ MAP 型を試してみる。 blog.amedama.jp MAP 型は一般的なプログラミング言語でいうマップや辞書といったデータ構造に相当する。 これを使うとテーブルのカラムに任意のキーで値を格納できる。 環境は次の通り。 $…

Apache Hive の STRUCT 型を試す

Apache Hive には基本となる文字列や数値以外にも複合型 (Complex Type) というデータタイプがある。 以前、その中の一つとして ARRAY 型をこのブログでも扱った。 blog.amedama.jp 今回は、それに続いて複合型の中で STRUCT 型というデータタイプを試してみ…

Apache Hive の Partition 機能を使ってみる

今回は Apache Hive の Partition 機能を使ってみる。 Partition 機能を用いない場合、クエリを発行するとテーブルを構成するファイル群にフルスキャンがかかる。 それに対し、Partition 機能を用いるとクエリによってはスキャンするファイルの範囲を制限で…

Apache Hive の ARRAY 型を試す

Apache Hive には ARRAY 型というデータタイプがある。 これは一般的なプログラミング言語でいえば配列に相当するもの。 ようするに、文字列や数値といったデータを一つのレコードに複数格納できる。 リレーショナルデータベースのアンチパターンであるジェ…

RedPen で技術文書を校正する

今回は RedPen というオープンソースの文書校正ツールを使ってみる。 こういったツールを使うことで、文書の典型的な誤りや読みにくいところを見つけやすくなる。 似たようなツールとしては textlint なんてのもある。 環境は次の通り。 $ sw_vers ProductNa…

Python: Twine を使って PyPI にパッケージをアップロードする

Python のサードパーティ製パッケージは、一般に PyPI (Python Package Index) というリポジトリに登録されている。 このリポジトリはユーザ登録さえすれば誰でも自分で作ったパッケージをアップロードできる。 今回は Twine というツールを使って PyPI にパ…

Python: ERAlchemy を使って ER 図を描く

今回は ERAlchemy という ER 図を描くツールを使ってみる。 このツールは erd という Haskell で書かれた同様のツールにインスパイアされて作られたものらしい。 ただ、機能的にできることは ERAlchemy の方が多いみたいだ。 ERAlchemy が提供する基本的な機…

macOS に Homebrew で PostgreSQL をインストールする

とあるライブラリのために PostgreSQL を使う機会があったので、その作業メモ。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G1114 $ brew --version Homebrew 1.4.1 Homebrew/homebrew-core (git rev…

Python: 機械学習で分類問題のモデルを評価する指標について

今回は、機械学習において分類問題のモデルを評価するときに使われる色々な指標について扱う。 一般的な評価指標としては正確度 (Accuracy) が使われることが多いけど、これには問題も多い。 また、それぞれの指標は特徴が異なることから、対象とする問題ご…