[解決済み】再現性の高いpandasのサンプルを作るには?
質問
を見るのに十分な時間を費やしました。
r
と
パンダ
タグをSOで使用した場合、その印象は
pandas
の質問には、再現可能なデータが含まれる可能性が低くなります。これはRコミュニティが推奨していることであり、以下のようなガイドのおかげです。
これ
初心者は、このような例題を作成するためのヘルプを得ることができます。これらのガイドを読んで、再現可能なデータを持ってくることができる人は、しばしば、質問に対する答えを得るのに、より良い運を持っています。
の再現性の高い例を作るにはどうしたらいいでしょうか?
pandas
という質問があります。簡単なデータフレームはまとめることができます、例えば。
import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'],
'income': [40000, 50000, 42000]})
しかし、多くのサンプルデータセットでは、例えばもっと複雑な構造を必要とします。
-
datetime
インデックスまたはデータ -
複数のカテゴリー変数(Rの
expand.grid()
関数は、与えられた変数のすべての可能な組み合わせを生成しますか?) - MultiIndexまたはPanelデータ
数行のコードでモックアップするのが難しいデータセットのために、Rの
dput()
コピーペースト可能なコードを生成して、データ構造を再生成することができるのでしょうか?
どのように解決するのですか?
注:ここでのアイデアは、Stack Overflowではかなり一般的なものです。 質問 .
免責事項:良い質問を書くことは ハード .
良かった点
-
実行可能なコードとして、小さな*サンプルDataFrameが含まれています。
In [1]: df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])
を使用してコピー&ペーストできるようにします。
pd.read_clipboard(sep='\s\s+')
を使用すると、Stack Overflow のハイライト用にテキストをフォーマットすることができます。 Ctrl + K (または、各行に4つのスペースを前置する) または、コードの上下に3つのバックスティック (```) を置き、コードをインデントしないようにします。In [2]: df Out[2]: A B 0 1 2 1 1 3 2 4 6
テスト
pd.read_clipboard(sep='\s\s+')
を自分自身に置き換えてみてください。* 私は本当に 小さい ということは、ほとんどのDataFrameは6行以下である可能性があります。 要引用回数 そして 5列でできるに違いない。 でエラーを再現できますか?
df = df.head()
? そうでない場合は、あなたが直面している問題を示す小さなデータフレームを作成できるかどうかを確認するためにいじくり回してください。* すべてのルールには例外があり、明らかなのはパフォーマンスの問題の場合です ( この場合、%timeit と、場合によっては %prun を使ってください。 ) を生成する必要があります (np.random.seed を使用して、まったく同じフレームを持つようにすることを検討してください)。
df = pd.DataFrame(np.random.randn(100000000, 10))
. とはいえ、quot;make this code fast for me"は、厳密にはサイトのトピックではないのですが......。 -
望む結果を書き出す(上記と同様)
In [3]: iwantthis Out[3]: A B 0 1 5 1 4 6
数字の由来を説明すると、Aが1である行のB列の合計が5である。
-
ドゥ・ショー コード を試してみてください。
In [4]: df.groupby('A').sum() Out[4]: B A 1 5 4 6
しかし、何が間違っているかと言うと、A列は列ではなくインデックスにあるのです。
-
調べたことをアピールする ( ドキュメントを検索する , 検索 Stack Overflow ) を作成し、概要を説明します。
<ブロッククオートsum の docstring には、単に "グループ値の合計を計算する" と記載されています。
<ブロッククオートその groupby ドキュメント は、これに関する例を示していません。
余談:ここでの回答は
df.groupby('A', as_index=False).sum()
. -
Timestampカラムを持つことが重要な場合、例えば、リサンプリングを行っている場合などは、明示的に適用してください。
pd.to_datetime
を追加することで、より効果的な対策ができます。df['date'] = pd.to_datetime(df['date']) # this column ought to be date..
** 文字列だったという、この問題そのものであることもあります。
悪いこと
-
は、MultiIndexを含まない。 コピー&ペーストができない (上記参照)。これはPandasのデフォルトの表示に対する不満のようなものですが、それにもかかわらず、迷惑です。
In [11]: df Out[11]: C A B 1 2 3 2 6
正しい方法は、通常のDataFrameを
set_index
を呼び出します。In [12]: df = pd.DataFrame([[1, 2, 3], [1, 2, 6]], columns=['A', 'B', 'C']).set_index(['A', 'B']) In [13]: df Out[13]: C A B 1 2 3 2 6
-
あなたが望む結果を与えるときにそれが何であるかについての洞察を提供します。
B A 1 1 5 0
数字の出し方(内容)を具体的に・・・正しいかどうか再確認してください。
-
コードがエラーをスローした場合、スタックトレース全体を含めるようにしてください(ノイズが多い場合は後で編集できます)。行番号 (と、そのエラーが発生したコードの対応する行) を表示します。
醜いこと
-
にリンクしないようにしましょう。 CSV ファイルにアクセスできない(外部ソースにまったくリンクしないのが理想だが...)。
df = pd.read_csv('my_secret_file.csv') # ideally with lots of parsing options
ほとんどのデータがプロプライエタリ それはわかった。似たようなデータを作って、問題が再現できるかどうか(小さなことでいいので)。
-
漠然とした言葉で状況を説明するのではなく、例えば、DataFrame が "large" で、カラム名のいくつかに一応触れておく(dtypes には言及しないように注意)。実際の文脈を見なければ全く意味のないことを、詳細に説明しようとする。おそらく、誰もこのパラグラフを最後まで読もうとはしないでしょう。
エッセイはダメだ、小さな例があれば簡単だ。
-
10行以上(100行以上?)のデータの説明をしてから実際の質問に入るのはやめてください。
お願いです、私たちは本業でこのようなことを十分見ています。お手伝いしたいのですが こんなんじゃダメだ...。 . イントロをカットして、問題のあるステップに関連するDataFrame(またはその縮小版)だけを表示します。
とにかく、Python、NumPy、Pandasの学習を楽しんでください。
関連
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pandasのカラム名のリネーム
-
[解決済み] Pandas DataFrameからカラムを削除する
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み】Pandasのgroupbyを使ったパーセント表示について
-
[解決済み] Python Pandas - 2つのデータフレーム間の差分を見つける