Python

pandasで ValueError: cannot reindex from a duplicate axisのエラー

ValueError: cannot reindex from a duplicate axis というエラーが、pandasにある。 エラーについて色々調べた結果、分からなかったこともあるけど、だいたい以下のとおりだろうか。 行もしくは列の名前に重複がある場合に、特定の操作で発生するようだ? 「…

NumPyのarrayとndarrayの違いを調べた

numpy.arrayとnumpy.ndarray、どちらもたまに見かけるのだが、あまり区別がついていなかった。arrayとndarrayの違いを調べてまとめた。 「numpy array ndarray difference」で検索すると出てくるStack Overflowの質問の内容を主に、検証結果をまとめる。 num…

pandasのDataFrameに空の列を追加する

pandasのDataFrameに、空の列を新しく追加(挿入)したい場合。 空の列の位置は気にしない場合(右端になる) どの値を入れれば良いの? 空の列を指定した位置に挿入したい場合 注意事項 参考 空の列の位置は気にしない場合(右端になる) 既存のDataFrameに1…

jupyter notebookのサンプルコードをブログに貼り付ける方法を調べた

このブログを書くときには、jupyter notebookでサンプルのコードを書いて、pythonや各種ライブラリの動作を検証している。 そこでいつも頭を悩ませるのが、「jupyter notebookの上のサンプルコードを、どうやってはてなブログに貼り付けるか?」である。 毎回…

pythonの機械学習・データ分析系の各ライブラリの人気度を調べてみる

2万4000超の開発者に聞いた、Pythonでよく使うフレームワークは? | マイナビニュース https://www.jetbrains.com/lp/python-developers-survey-2019/ を読んで調べたこと。 Python Developers Survey 2019 Results Stack Overflow trend検索 Stack Overflow…

pandas 特定列の値をユニークな数値IDに変換する3つの方法

pandasのDataFrameやSeriesがあったときに、ある列の値に基づいて数値に変換して、ユニークな整数IDを振りたい時がある。文字列の型のカテゴリを番号に変換したいという状況だ。 1行ずつ見ていけばできることはできるのだが、もっと簡単に速くできる方法は無…

pythonのmath.acos()関数でValueError: math domain error

pythonのmath.acos()関数でValueError: math domain errorが出た話。 浮動小数点演算で誤差が乗って、定義域の範囲外の数を引数に入れていた。 2次元座標の上の3つの点から、なす角を求めようとした。 より正確に言えば、2つのベクトルのなす角θを求めようと…

pandasで空のDataFrameにapply()してエラーになった

pandasで、 ValueError: Cannot set a frame with no defined index and a value that cannot be converted to a Series というエラーが出ることがある。 結論をいうと、これは空のDataFrameに対してapply()をしたときに発生するエラーである。 そうなら「エ…

python競技プログラミングで、二項係数の計算でTLEしたので高速化した話

競技プログラミング(AtCoderなど)によくある、二項係数(コンビネーション)を109+7で割った余りを求める話です。 前提条件 Pythonで実装するときに、気をつけるべきポイントを書いておきます。 C++やJavaを使ってる人は、この記事を読む意味はありません…

pandasでDataFrameの最初(一番左)に列を追加・挿入する方法

pandasでDataFrameの最初(一番左)に列を追加・挿入する方法。 環境:pandasのversionは0.25.3です。 列名を指定して追加する方法だと末尾(最後、右端)に追加される 既存のDataFrameに1つの列を新規に追加する最も一般的な方法は、df['new_column'] = (追…

pandasのinfer_objects()は文字列を数値に変換しない

pandasのinfer_objects()は、数字の入った文字列('123')を数値(123)に変換しない、という話。 StackOverflowのURL: https://stackoverflow.com/questions/35003138/python-pandas-inferring-column-datatypes/48269724 のコメント infer_objects()は、D…

Djangoで NoReverseMatch, XXX is not a registered namespaceのエラー

注意: この記事を書いているのはDjangoの超初心者です。分かっていないところが多々あります。 以下を読む際は、不正確な記述が含まれている可能性があることを考慮してください。 Djangoで NoReverseMatch, XXX is not a registered namespaceというエラー…

Django Girls チュートリアルには足りないものが1つある

タイトルを「Django Girls チュートリアルに欠けている、たった一つのこと」みたいな感じの惹句にしようかと思ったけど、これは不正確だなと思ったのでやめた。 Djangoの初心者がDjango Girlsチュートリアルを通してやってみたけど、モヤモヤする部分があり…

python setの和集合・積集合の計算に、and/orは使えない

タイトルの通りである。 python setの和集合・積集合の計算にand/orは使えない。 ミスってからすぐ気づいたので大きな手戻りにはならなかったが、備忘録として今後忘れないように書き留めておく。 setに対してand/orを使うと何が起きるか Pythonのバージョン…

pandasのデータ型、dtypeについて 公式ドキュメントを翻訳した

この記事は何?公式ドキュメントの(個人的な)翻訳だよ Essential basic functionality — pandas 1.0.3 documentation pandasの型であるdtypeについての公式ドキュメントを翻訳した。 内容は、pandasのSeriesやDataframeに関して dtypeの基本事項 型を判定…

pandasでDataFrameから行をSeriesとして抽出した場合、暗黙の型変換が実行されるので注意

環境 発生事象 仕組み、理由 同様の事象 iterrows 転置 関連 環境 python, pandas, jupyter のバージョン > python --version # Python 3.7.4 import pandas as pd pd.__version__ # '0.25.2' > jupyter notebook --version # 6.0.1 発生事象 データ分析中に…

Effective Python 第2版(原著)が出るみたいだよ

Effective Pythonの第2版(英語)が発行されるという話を、しばらく前から見かけていた。 最近になって、著者のBrett Slatkin氏が、とうとう発行されるというツイートをしていた。 Effective Python: Second Edition is now available for preorder!Highligh…

[pandas]groupbyの最初・最後の行を求めるfirst・last関数の話、headやnthとの違い

pandasで、ある特定の列の値に応じてグループ化(集計・集約)し、特定の列の値ごとに最初の行(もしくは最後の行)を求めたいときの話。 基本的な例:グループごとに最初の行を選択する(first、nth、head) 基本的な例:グループごとに最後の行を選択する…

[未解決]pythonスクリプトとjupyterとでは、matplotlibの図のサイズが違うので注意

jupyter notebook上で、図を作って保存するコードを少しずつ試しながら書いてた。 その後pythonにコードをコピーしたら、保存された図がjupyterのときと違っていたので、原因を調べた。 環境 バージョン Python、Jupyter、matplotlib > python --version # P…

matplotlib.pyplotをインポートしようとしたらtkinterがなくてエラーになった

pythonでimport matpliotlib.pyplot を実行したらModuleNotFoundError: No module named 'tkinter'と言われたので、tkinterをインストールした話。 環境 OS : Windows 8.1 (64bit) > python --version # Python 3.7.4 import matplotlib print(matplotlib.__…

seabornでカテゴリ別データを描画するときに入力データを指定する方法のまとめ

seabornはpythonのグラフ作成ライブラリで、Matplotlibのラッパーである。 少ない行数で書くことができて、見た目をいい感じに描画してくれるので、俺はなかなかseabornが好きだ。 そのseabornには、カテゴリ別のデータをグラフにする関数がある。 これらの…

二項係数を10^9+7 で割った余りを求める方法

注意 2020年2月23日 以下に書いてある方法はやや遅く、TLEになる危険性もあります。新しく書いたこの記事も参考にしてください。 linus-mk.hatenablog.com 競技プログラミングでよくある「二項係数 nCk を109+7 で割った余りを求める」方法を整理しておく。 …

pythonの除算結果が浮動小数点数になったので、必要な精度が失われた話

(注:pythonの話を書いていますが、浮動小数点の精度の話は他のプログラミング言語でも同様だと思います。 pythonの記法では、浮動小数点の除算演算子が/であり、整数除算の演算子が//であることに注意してください) 特に、大きな数の計算で答えの整数を正…

松尾研究室の「第3期 Data Science Online Course」を修了した

東京大学 松尾豊研究室の「第3期 Data Science Online Course」を修了した。 online course general | 東京大学グローバル消費インテリジェンス寄付講座 「グローバル消費インテリジェンス寄付講座」、Global Consumer Intelligenceを略してGCI講座と書かれ…

【未解決】Pythonの関数とグローバル変数とローカル変数の話

最近は競技プログラミングに対する熱がだいぶ高まっている。 以前にやって解けなかったこの問題を、少し前に解き直していた。 C - 広告 そうしたら思わぬ挙動にハマったのでメモしておく。 問題のコード 元々書いていたコードは前述の問題を解くためのものだ…

Python ビットシフトと加減算の演算子の優先順位

気づいてしまえば何ということもない話だったが、解決までに結構時間を食ってしまったので、忘れないようにメモしておく。 Pythonの演算子で、ビットシフト演算子は加算・減算演算子よりも優先順位が低い。 演算子の優先順位の一覧は、公式ドキュメントの以…

pandasでサンプルのデータセットを使う4個の方法をまとめた

pandasを使っていて、ある関数の挙動を確認するのに、ちょろっとお試しのデータセットがあれば良いなぁ、と思うことがある。 俺も以前の記事で、pandasの使い方を説明するときに、自作のデータセットを使って書いていた。 [pandas]特定の条件を満たす行を…

pandasのSettingWithCopyWarningを理解する (2/3)

この記事は、 SettingwithCopyWarning: How to Fix This Warning in Pandas – Dataquest の日本語訳です。3回にわたって掲載予定で、この記事は2回目です。 1回目の記事はこちら: linus-mk.hatenablog.com SettingWithCopyWarningを処理するためのヒントと…

メモ:Matplotlibのグラフの書き方が2通りある話

概要 Matplotlibのインターフェースには2通りある。MATLABに近い書き方と、オブジェクト指向のインターフェースである。公式は後者を推奨している。 私も昨日知ったばかりでまだまだ詳しくない。メモ程度に書いておくので、詳細は参考文献などを見てほしい。…

[pandas]特定の条件を満たす行を削除する

DataFrameから、特定の条件を満たす行を削除する方法について。 例を挙げよう。 import pandas as pd df = pd.DataFrame({ 'name' : ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Fred'], 'English' : [12, 34, 56, 78, -1, 90], 'Math' : [88, 66, -1, 44…