You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
プログラムを作ってみたは良いけれど、想定していたよりもパフォーマンスが出ないという事態はよくある。 そんなときはパフォーマンス・チューニングをするわけだけど、それにはまず測定が必要になる。 具体的に何を測定するかというと、プログラムの中のどこがボトルネックになっているかという点だ。 この測定の作業は一般にプロファイリングと呼ばれる。 プロファイリングにはふたつの種類がある。 ひとつ目は今回紹介する profile/cProfile モジュールが採用している決定論的プロファイリング。 そして、もうひとつが統計的プロファイリングだ。 決定論的プロファイリングでは、プログラムが実行されていく過程を逐一記録していく。 そのため、時間のかかっている処理を正確に把握することができる。 ただし、測定自体がプログラムに与える影響 (プローブ・エフェクト) も大きくなる。 それに対し統計的プロファイリングで
概要Pythonモジュールのpandasにはplot関数があり、これを使えばpandasで読み込んだデータフレームを簡単に可視化することができます。ただし、大量の引数(34個)があるにもかかわらず、公式マニュアルを見ても引数の一部しか説明されておらず、一体何ができるのか整理したくなり、この記事を書きました。データはirisを使い、plotの各引数の効果を検証しました。 import pandas as pd if __name__ == "__main__": #元データ df = pd.read_csv('iris.csv', index_col=0) どんな引数があるのか?df.plot?とヘルプを叩くことで、変数の一覧と説明(英語)を取得できます。実に34個の引数があるようです。使いこなして、簡単にいろんなグラフを書きたいですね。
前処理大全の第7章の展開では、縦持ちから横持ちのawesomeな方法が記載されていましたが、逆の横持ちから縦持ちへの言及がありませんでした。このような手法は、あまり多用されていないから記載がなかったのかもしれません。 今回、仕事で横持ちから縦持ちにする必要がでてきたので調べてみました。
PandasのDataFrameを縦持ちから横持ちにする方法とその逆(横持ちから縦持ちにする方法)についての備忘録です。 縦持ちと横持ち 縦持ちは、以下のように、カラム固定で1行に1つの値を持たせている表です。カラムをおいそれと変更できないDBのテーブルなどはこういった形かと思います。 customer_id product_id count C1 P1 1 C1 P2 2 C2 P2 2 C2 P2 1 C3 P3 3 一方で、横持ちは、カラム数が可変で1行に複数の値をもたせている表です。行列はこういう形になるでしょう。 P1 P2 P3 C1 1 2 0 C2 0 3 0 C3 0 0 3 縦持ちから横持ちへ変換する それでは縦持ちとなっている以下のデータを横持ちへ変換します。 import pandas as pd import numpy as np orders_df = pd.
マイクロアドの京都研究所で機械学習エンジニアをしている田中です。 機械学習を利用したユーザーの行動予測の研究開発などを担当しています。 今回は、データの前処理に関するお話をしたいと思います。 データの縦横変換 縦横変換するためのpandasの関数 省メモリに縦横変換する サンプルデータの準備 pandas.Categoricalの活用 scipy.sparseの疎行列クラスの活用 さいごに 参考 データの縦横変換 機械学習や統計解析をする際に頻出するデータの前処理の1つに、データの縦横変換があります。 縦横変換とは、縦持ち(またはlong型)のデータと、横持ち(またはwide型)のデータを互いに変換することを指します。 縦持ちのデータの例 横持ちのデータの例 例示したこの2つのテーブルは、表現形式こそ異なりますが、表しているデータ自体はどちらも同じものになります。 ユーザーの行動予測をする
こんにちは、ほけきよです。 pythonでデータを取り扱っているとき「あれ、これどうやるんだっけ??」 ってなること、ありませんか?僕は10分に1回程度なります。 いや、覚えろと自分でも思うんですが、覚えられないんですよね。100回くらい同じコマンドを調べてたりする。 物覚えが良くないので、ココを見れば絶対大丈夫なようにしておこうと思い、まとめてみました。 jupyterで最初に開くときに読み込むモジュールたち datetime 日付⇔文字列の変換 datetimeの足し算引き算 json dict型⇔json jsonファイルの入出力 datetimeをjsonにする時、エラーが出る pandas ~以外を表すやつ andとor inf弾く リストをdfにサクッと変換 datetimeとして読み込み 読み込み時にcodecのエラーが出る DataFrameのfor文 numpy lins
このエントリは全9回を予定する18卒新人ブログリレーの第3回です. はじめまして.今年度よりリクルートテクノロジーズに入社した河野 晋策です. 7月からQassチームにて検索ロジックの改善を行っています. Qassチームは,検索基盤の運用や検索ロジックの改善を行っているチームです. 詳しくは以下の記事をご覧ください. 検索組織の機械学習実行基盤 リクルート全社検索基盤のアーキテクチャ、採用技術、開発体制はどうなっているのか Elasticsearch+Hadoopベースの大規模検索基盤大解剖 本記事の想定読者:普段Jupyter notebook・Jupyter Lab,Google Colaboratoryを使っている方,またこれから使おうと考えている方 本記事の概要:jupyter notebookの知見共有 はじめに Jupyter notebookとは 近年,データの重要性が様々な
はじめに (MySQLとか使ってて)初期データをインポートしたい時なんかはHeidiSQLみたいなクライアントソフトを使えばいいんですが、勉強がてら作ってみました。 モデルの例 こんなモデルを用意してみました。 WeaponテーブルのデータをCSVでインポートしたいと思います。 外部キーも使いたかったので、サブウェポンとスペシャルを無理やりテーブルにして外部キーとして参照させています。 class SubWeapon(models.Model): # TODO: Define fields here name = models.CharField('名前', blank=True, max_length=100) overview = models.TextField('概要', blank=True) class Meta: verbose_name = 'サブウェポン' verbose
前にSQLで言う所のcase when x then y else z end的な処理をpandasでやる時にすぐやり方を忘れるから記事にした。あれはあれでいいのだけれど、まだまだ前処理にすごく時間がかかる!!めっちゃめんどい なんとかしたい... 今までpandas.DataFrameで色々特徴量生成(feature creationとかfeature engineering)する時に、ごちゃごちゃpandasのネイティブな機能を使って生成してたけど、kagglerのエレガントなデータの前処理を見ていると下記モジュールを使っている人が多い印象。 scikit-learn.preprocessing category_encoders featuretools 特に大量に特徴量を生成したい場合、**featuretools**がすごく便利そうな予感!!! よっしゃ!! 使ってみよ!!! F
最近、jupyter notebookを使い始めた人から質問を受け、僕も前にはまったことがあるのでメモを残します。 jupyter notebookでノート上にグラフを書こうと思い例えば、 import numpy as np import matplotlib.pyplot as plt x = np.arange(-10, 10, 0.1) y = np.arctan(x) plt.plot(x, y) のように書くと、グラフが表示されません。 コード自体は間違っていないので、理由が分からずはまってしまうことがあるようです。 これを解決するには、先頭で、 %matplotlib inlineを1行書けば解決します。 他にも起動時に jupyter notebook --matplotlib inlineとする方法でもOKです。 以下のブログに、説明があります yagays.github
基本的な使い方 文字列の埋め込み プレースホルダに{{変数名}}を使用します。 from jinja2 import Template tpl_text = '僕の名前は{{ name }}です!!{{ lang }}が好きです!!' template = Template(tpl_text) data = {'name': 'Kuro', 'lang': 'Python'} disp_text = template.render(data) # 辞書で指定する print(disp_text) # 僕の名前はKuroです!!Pythonが好きです!! プレースホルダをもった文字列tpl_textから、テンプレートオブジェクトを生成します。renderメソッドで値を指定すると、戻り値として文字が埋め込まれたデータが返されます。 テンプレートファイルの読み込み さて、通常、上のコードのように
こんにちは。吉田弁二郎です。 先日(5月5日)、pandas の最新版 0.20.1 がリリースされました。agg/transformメソッドがgroupbyしなくても使えるようになり、10倍以上高速な I/O を実現する feather-format が(試験的に)導入され、スライスの際に頻繁に利用されていた.ixインデクサが deprecated となるなど、全般的に着実な改善もしくは変更がされている印象です。以下、リリースノートのハイライト部分より、目についたものをピックアップしていきます。 agg/transformが Series/DataFrame に対して直接使える 従来はgroupbyメソッドを呼んだ際につくられる SeriesGroupBy/DataFrameGroupBy オブジェクトで利用可能だった集約関数aggおよびtransformが Series/DataFra
The documentation for the iPython Notebook is top-notch. I am only copying the keyboard shortcuts here so that I have quick access to them as I learn them. I like the notebook interface so much, despite it being browser-based, that I am actually using it as a notebook and I’m doing some drafting of my MLA paper in it. (I’ll report more on this experience later.)
今日はPython (Pandas)で高速にCSVを読むことに挑戦したいと思います。 Kaggleに参加するたびに、イライラしていたので各実装の白黒はっきりさせようと思います。 R使いが羨ましいなぁと思う第一位がCSV読込が簡単に並列出来て速いことなので、 なんとかGILのあるPythonでも高速に読み込みたいと思います。 ただ、この検証ではコーディング量が多いものは検証しません。 CSV読込は頻出するので、フットワークの軽さが重要です。(オレオレライブラリ嫌い) Pickleは早いけど。。。 結論はDask使おう! 検証環境 データ 速度検証 pandas.read_csv() pandas.read_csv() (dtype指定) pandas.read_csv() (gzip圧縮) numpy.genfromtxt() pandas.read_csv() (chunksize指定 +
はてなブログに移行して最初の記事はやはりPythonネタにしました。 はてなブログいいですね。デザインの編集がやりやすくなったのと、Markdownで書けるのが素晴らしいです。 PyCon 2013の動画を見ていたら、素晴らしい"Transforming Code into Beautiful, Idiomatic Python"という発表を見つけたのでそのまとめです。 今どきのPythonコードのベターな書き方を紹介しています。 Transforming Code into Beautiful, Idiomatic Python ... スライドはこちらにありました 結構長くなってしまったので、知ってる項目は読み飛ばしてもらえばと思います。 ループの基本 整数のループ まずは基本のループ。 Cのfor int i=0; i<6; i++をPythonで単純に書くとこうなります。 for
システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPythonの技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く