タグ付けされた質問 「pandas」

Pandasは、データの操作と分析のためのPythonライブラリです。たとえば、データフレーム、多次元時系列、統計、実験科学の結果、計量経済学、金融などでよく見られる断面データセットです。Pandasは、Pythonの主要なデータサイエンスライブラリの1つです。

3
パンダシリーズからNaNを削除
パンダシリーズからNaN値を削除する方法はありますか?一部のNaN値が含まれる場合と含まれない場合があるシリーズがあり、すべてのNaNが削除されたシリーズのコピーを返したいと思います。
81 python  pandas  series 

4
パンダの時系列プロットに垂直線をどのようにプロットしますか?
vlinesPandasシリーズプロットで垂直線()をどのようにプロットしますか? パンダを使ってローリング平均などをプロットしていますが、重要な位置を縦線でマークしたいと思います。 vlinesこれを達成するために、または同様のものを使用することは可能ですか? この場合、x軸はdatetimeです。

3
(row、col、values)のタプルのリストからパンダDataFrameを構築します
私はのようなタプルのリストを持っています data = [ ('r1', 'c1', avg11, stdev11), ('r1', 'c2', avg12, stdev12), ('r2', 'c1', avg21, stdev21), ('r2', 'c2', avg22, stdev22) ] そして、最初の列で名前が付けられた行と2番目の列で名前が付けられた列を持つパンダDataFrameにそれらを配置したいと思います。行名を処理するpandas.DataFrame([x[1:] for x in data], index = [x[0] for x in data])方法は次のようなもののようですが、2x2行列(前のセットからの出力は3x4)を取得するために列を処理するにはどうすればよいですか?行ラベルを明示的に省略するのではなく、行ラベルを処理するよりインテリジェントな方法はありますか? 編集2つのDataFrameが必要になるようです-1つは平均用、もう1つは標準偏差用ですが、それは正しいですか?または、各「セル」に値のリストを保存できますか?

2
パンダto_html()は文字列の内容を切り捨てます
DataFrameテキストデータを含むPythonPandasオブジェクトがあります。私の問題は、to_html()関数を使用すると、出力の文字列が切り捨てられることです。 例えば: import pandas df = pandas.DataFrame({'text': ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.']}) print (df.to_html()) 出力はで切り捨てられます adapis... <table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th></th> <th>text</th> </tr> </thead> <tbody> <tr> <th>0</th> <td> Lorem ipsum dolor sit amet, consectetur adipis...</td> </tr> </tbody> </table> SOには関連する質問がありますが、プレースホルダーと検索/置換機能を使用してHTMLを後処理しますが、これは避けたいと思います。 Pandasデータフレームの全内容をHTMLテーブルに書き込む この問題に対するより簡単な解決策はありますか?ドキュメントから関連するものは何も見つかりませんでした。
81 python  html  pandas 

1
どのような状況で、Apache Sparkの代わりにDaskを使用できますか?[閉まっている]
クローズ。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前に閉鎖されました。 この質問を改善する 私は現在、データ分析にPandasとSparkを使用しています。Daskが並列化されたNumPy配列とPandasDataFrameを提供していることがわかりました。 Pandasは、Pythonでデータ分析を行うのに簡単で直感的です。しかし、システムメモリが限られているため、パンダで複数の大きなデータフレームを処理するのは困難です。 簡単な答え: Apache Sparkは、分散コンピューティング、SQLクエリ、機械学習などを組み合わせた包括的なフレームワークであり、JVMで実行され、通常、Hadoopなどの他のビッグデータフレームワークと共同でデプロイされます。...一般的に、DaskはSparkよりも小型で軽量です。 http://dask.pydata.org/en/latest/spark.htmlから以下の詳細を知ることができます Daskは軽量です Daskは通常、単一のマシンで使用されますが、分散クラスターでも適切に実行されます。 Daskは、並列配列、データフレーム、機械学習、カスタムアルゴリズムを提供します Daskはそれ自体がPythonライブラリであるため、Pythonユーザーにとって利点があります。そのため、問題が発生した場合のシリアル化とデバッグがよりスムーズに行われます。 Daskは、ユーザーがより複雑な並列アルゴリズムを表現できるように、高度な理解を放棄します。 Daskは軽量で、既存のコードやハードウェアに簡単に統合できます。 すべてを実行する単一のプロジェクトが必要で、すでにビッグデータハードウェアを使用している場合は、Sparkが安全です。 Sparkは通常、中小規模のクラスターで使用されますが、単一のマシンでも正常に動作します。 以下のリンクからDaskについて詳しく理解しています https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster Pandas、NumPy、またはPythonで他の計算を使用しているときに、単一のマシンでメモリの問題、ストレージの制限、またはCPUの境界に遭遇した場合、Daskは単一のマシンのすべてのコアでスケールアップまたはスケールアウトするのに役立ちますクラスタ全体のすべてのコアとメモリで。 Daskは、単一のマシンでうまく機能し、ラップトップのすべてのコアを利用して、メモリよりも大きいデータを処理します 数百のノードを持つクラスターで弾力的かつ弾力的にスケールアップします。 Daskは、Hadoop分散ファイルシステム(HDFS)やAmazon S3など、さまざまな形式やストレージシステムのデータを使用してPythonからネイティブに動作します。AnacondaとDaskは、ClouderaCDHやHortonworksHDPなどの既存のエンタープライズHadoopディストリビューションと連携できます。 http://dask.pydata.org/en/latest/dataframe-overview.html 制限事項 Dask.DataFrameは、Pandasインターフェース全体を実装しているわけではありません。これを期待しているユーザーはがっかりするでしょう。特に、dask.dataframeには次の制限があります。 ソートされていない列から新しいインデックスを設定するにはコストがかかります groupby-applyやソートされていない列での結合などの多くの操作では、インデックスを設定する必要がありますが、前述のようにコストがかかります PandasAPIは非常に大きいです。Dask.dataframeは、多くのパンダ機能やNDFrameのようなよりエキゾチックなデータ構造の実装を試みません。 Dask開発者に感謝します。非常に有望な技術のようです。 全体として、Daskはsparkよりも使いやすいことがわかります。DaskはPandasと同じくらい柔軟性があり、より多くのCPUの並列処理で計算する能力があります。 Daskに関する上記の事実をすべて理解しています。 では、Daskで処理できるデータの量(テラバイト単位)はおおよそどれくらいですか?

3
Pandasのパフォーマンスは、既存の列から新しい列を作成するためにnp.vectorizeに適用されます
Pandasデータフレームを使用していて、既存の列の関数として新しい列を作成したいと思います。私はとの速度差の良い議論を見ていないdf.apply()とnp.vectorize()私は、私はここに求めるだろうと思ったので、。 パンダのapply()機能は遅いです。私が測定したもの(いくつかの実験で以下に示す)から、少なくとも私の2016 MacBook Proでは、np.vectorize()使用はDataFrame関数を使用するよりも25倍高速(またはそれ以上)ですapply()。これは期待される結果ですか、そしてその理由は何ですか? たとえば、次のN行のあるデータフレームがあるとします。 N = 10 A_list = np.random.randint(1, 100, N) B_list = np.random.randint(1, 100, N) df = pd.DataFrame({'A': A_list, 'B': B_list}) df.head() # A B # 0 78 50 # 1 23 91 # 2 55 62 # 3 82 64 # 4 99 80 さらに、2つの列Aとの関数として新しい列を作成するとしBます。以下の例では、単純な関数を使用しますdivide()。関数を適用するには、df.apply()またはのいずれかを使用できますnp.vectorize(): def …

4
パンダのプロットが表示されない
これをスクリプト(IPythonではない)で使用すると、何も起こりません。つまり、プロットウィンドウが表示されません。 import numpy as np import pandas as pd ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() を追加してtime.sleep(5)も何もありません。どうして? matplotlibを手動で呼び出さずにそれを行う方法はありますか?

9
PandasDataFrameで無効な値をNoneに置き換えます
NonePythonのPandasで値を置き換える方法はありますか? df.replace('pre', 'post')値を使用して別の値に置き換えることはできますが、値に置き換えたい場合はこれを行うことができずNone、試してみると奇妙な結果が得られます。 だからここに例があります: df = DataFrame(['-',3,2,5,1,-5,-1,'-',9]) df.replace('-', 0) これは成功した結果を返します。 だが、 df.replace('-', None) これは次の結果を返します: 0 0 - // this isn't replaced 1 3 2 2 3 5 4 1 5 -5 6 -1 7 -1 // this is changed to `-1`... 8 9 なぜそのような奇妙な結果が返されるのですか? このデータフレームをMySQLデータベースに注ぎたいのでNaN、データフレームのどの要素にも値を入れることができず、代わりに入れたいと思いNoneます。確かに、あなたは最初に変更することができます'-'しNaN、その後の変換NaNにNone、私はデータフレームは、このようなひどいやり方で動作する理由を知りたいです。 Python2.7およびOSX10.8のパンダ0.12.0devでテスト済み。PythonはOSXにプリインストールされているバージョンであり、参考までに、SciPySuperpackスクリプトを使用してパンダをインストールしました。

3
マルチスレッドに関するPandasとNumpyの奇妙なバグ
Numpyの関数のほとんどは、デフォルトでマルチスレッドを有効にします。 たとえば、スクリプトを実行すると、8コアのIntel CPUワークステーションで作業します import numpy as np x=np.random.random(1000000) for i in range(100000): np.sqrt(x) Linux topは、実行中に800%のCPU使用率を表示し ます。つまり、numpyはワークステーションに8つのコアがあることを自動的に検出し、8つのコアnp.sqrtすべてを自動的に使用して計算を高速化します。 しかし、私は奇妙なバグを見つけました。スクリプトを実行すると import numpy as np import pandas as pd df=pd.DataFrame(np.random.random((10,10))) df+df x=np.random.random(1000000) for i in range(100000): np.sqrt(x) CPU使用率は100%です!!。 つまり、numpy関数を実行する前に2つのpandas DataFrameを追加すると、numpyの自動マルチスレッド機能は警告なしに消えてしまいます。これは絶対に合理的ではありません、なぜPandas dataFrame計算はNumpyスレッド設定に影響するのですか?バグですか?これを回避する方法は? PS: Linux perfツールを使用してさらに掘り下げます。 最初のスクリプトショーの実行 2番目のスクリプトの実行中に したがって、両方のスクリプトにはが含まれますがlibmkl_vml_avx2.so、最初のスクリプトにはlibiomp5.soopenMPに関連すると思われる追加のスクリプトが含まれます。 そして、vmlはIntelベクトル数学ライブラリを意味するので、vml docによれば、少なくとも以下の関数はすべて自動的にマルチスレッド化されると思います
25 python  pandas  numpy 

7
辞書に基づいてデータフレームに新しい列を追加する
データフレームと辞書があります。新しい列をデータフレームに追加し、辞書に基づいてその値を計算する必要があります。 機械学習、いくつかのテーブルに基づく新しい機能の追加: score = {(1, 45, 1, 1) : 4, (0, 1, 2, 1) : 5} df = pd.DataFrame(data = { 'gender' : [1, 1, 0, 1, 1, 0, 0, 0, 1, 0], 'age' : [13, 45, 1, 45, 15, 16, 16, 16, 15, 15], 'cholesterol' : [1, 2, 2, …

7
パンダ列にリストのすべての要素が含まれているかどうかを確認する
私はこのようなdfを持っています: frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']}) そしてアイテムのリスト: letters = ['a','c'] 私の目標はframe、少なくとも2つの要素を含む行をすべて取得することですletters 私はこの解決策を思いつきました: for i in letters: subframe = frame[frame['a'].str.contains(i)] これは私が欲しいものを私に与えます、しかしそれはスケーラビリティの点で最良の解決策ではないかもしれません。「ベクトル化された」ソリューションはありますか?ありがとう
20 python  pandas 

5
各変数の値カウントをアンスタックして返しますか?
私は、複数選択式の質問を通じて19717人のプログラミング言語の選択の応答を記録するデータフレームを持っています。もちろん、最初の列は回答者の性別ですが、残りは選択した選択肢です。したがって、Pythonを選択した場合、私の応答はPython列に記録され、bashでは記録されず、その逆も同様です。 ID Gender Python Bash R JavaScript C++ 0 Male Python nan nan JavaScript nan 1 Female nan nan R JavaScript C++ 2 Prefer not to say Python Bash nan nan nan 3 Male nan nan nan nan nan 私が欲しいのは、Genderレコードの下の各カテゴリーのインスタンスの数を返すテーブルです。したがって、5000人の男性がPythonで、3000人の女性がJSでコーディングされている場合、私はこれを取得する必要があります。 Gender Python Bash R JavaScript C++ Male 5000 1000 800 …


3
パンダのデータフレームを階層型辞書に変換する方法
次のパンダデータフレームがあります。 df1 = pd.DataFrame({'date': [200101,200101,200101,200101,200102,200102,200102,200102],'blockcount': [1,1,2,2,1,1,2,2],'reactiontime': [350,400,200,250,100,300,450,400]}) 埋め込み辞書の値をリストとして使用して、次のような階層型辞書を作成しようとしています。 {200101: {1:[350, 400], 2:[200, 250]}, 200102: {1:[100, 300], 2:[450, 400]}} どうすればいいですか?私が得る最も近いものはこのコードを使用しています: df1.set_index('date').groupby(level='date').apply(lambda x: x.set_index('blockcount').squeeze().to_dict()).to_dict() どちらが戻ります: {200101: {1: 400, 2: 250}, 200102: {1: 300, 2: 400}}
16 python  pandas 

4
2列のリストを行単位で効率的に比較する
次のようなPandas DataFrameがある場合: import pandas as pd import numpy as np df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']], 'yesterday': [['a', 'b'], ['a'], ['a']]}) today yesterday 0 ['a', 'b', 'c'] ['a', 'b'] 1 ['a', 'b'] ['a'] 2 ['b'] ['a'] ... etc しかし、約10万のエントリがあるため、これらのリストの追加と削除を2つの列で行ごとに見つけようとしています。 それはこの質問に匹敵します:パンダ:リストの列をDataFrameで行ごとにパンダ(forループではない)と比較する方法は? しかし、私は違いを見ています、そしてPandas.apply方法はそれほど多くのエントリのためにそれほど速くないようです。これは私が現在使用しているコードです。方法:Pandas.applynumpy's setdiff1d additions = df.apply(lambda row: np.setdiff1d(row.today, …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.