[解決済み] Matlabのセルアレイに相当するものは何ですか?
質問
私はPythonの初心者で、Matlabの"セル配列"に相当するものを作ろうとしています。例えば、100人の顧客のインデックスが'C001'、'C002'などで、顧客ごとに異なるデータを持っているとします。
- 敷地面積(平方メートル)【実数
- 商業」、「住宅」、「その他」のいずれであるかを示すカテゴリーデータ
- 2014年の電力消費量の時系列データ(8760個の実数値からなる時系列インデックス配列)。
Python 2.7で、単一値、カテゴリデータ、時間インデックスの配列を組み合わせたデータセットをビルドする最良の方法は何でしょうか?私はこのためにpandasを使おうとしていますが、今のところ成功しません。
よろしくお願いします。
どのように解決するのですか?
MATLABのセル配列に相当するのは、numpyのオブジェクト配列です。 しかし、これらは実際にはほとんど必要ないため、ほとんど使用されません。 MATLABでCellを使うほとんどの場合、リストかネストされたリストで十分でしょう。
>>> a = [obj1, obj2, obj, obj4]
>>> b = [[obj1, obj2], [obj3, obj4]]
しかし、あなたの場合はそうしたいわけではありません。 あなたの質問は、典型的な例で X Y問題 . 問題そのものを解決する方法ではなく、問題に対する特定の解決策をどのように実装するかを尋ねているのです。 PythonはMATLABができないことをたくさんできるので、PythonをMATLABのように動作させようとすると、しばしば最適でない解決策になることがあります。
この場合、あなたが欲しいのは pandas データフレーム . これは MATLAB のセル配列とは全く異なりますが、データセットにはより良くフィットします。 を使うことができます。 MultiIndex にパラメータを格納し、列には時系列データを格納する。 これにより、名前、サイズ、カテゴリー、日付などでインデックスを作成することができる。 例えば、500平方メートル以上の物件について、第3四半期における各カテゴリーの平均エネルギー使用量をたった1行のコードで計算することができるのです。
では、このようなデータをどのように構成すればよいのか、その例を挙げてみましょう。
>>> names = ['C001', 'C002', 'C003', 'C004']
>>> sizes = np.abs(np.random.random(4))*1000
>>> category = ['Commerical', 'Residential', 'Residential', 'Other']
>>> ts = np.random.random([100, 4])
>>> timestamps = pd.date_range('1/1/2011', periods=100, freq='W')
>>>
>>> cols = pd.MultiIndex.from_arrays([names, sizes, category])
>>>
>>> df = pd.DataFrame(ts, index=timestamps, columns=cols)
>>> df.columns.names = ['Name', 'Size', 'Category']
>>> df.index.name = 'Time'
>>>
>>> print(df)
Name C001 C002 C003 C004
Size 36.719201 732.278278 795.755755 551.383120
Category Commerical Residential Residential Other
Time
2011-01-02 0.108720 0.018492 0.057233 0.694548
2011-01-09 0.959845 0.968857 0.422210 0.975767
2011-01-16 0.709676 0.119963 0.004481 0.830328
2011-01-23 0.084271 0.535408 0.209943 0.668001
2011-01-30 0.626125 0.052301 0.212636 0.995429
2011-02-06 0.376399 0.199327 0.482884 0.632472
2011-02-13 0.302807 0.353679 0.599427 0.993996
2011-02-20 0.185445 0.005769 0.755981 0.923540
2011-02-27 0.109611 0.994292 0.873782 0.542741
2011-03-06 0.561404 0.778414 0.595238 0.082001
2011-03-13 0.056986 0.869344 0.459753 0.450071
2011-03-20 0.261320 0.675317 0.603043 0.371950
2011-03-27 0.890803 0.061619 0.831677 0.801890
2011-04-03 0.498199 0.846559 0.370336 0.225477
2011-04-10 0.248914 0.693038 0.145255 0.233058
2011-04-17 0.621441 0.683213 0.048944 0.650139
2011-04-24 0.459869 0.055751 0.912097 0.457605
2011-05-01 0.814447 0.780415 0.184241 0.429139
2011-05-08 0.586905 0.209121 0.428080 0.246584
2011-05-15 0.754021 0.909181 0.846984 0.948835
2011-05-22 0.513610 0.203925 0.338072 0.596325
2011-05-29 0.497080 0.557908 0.916812 0.680242
2011-06-05 0.646791 0.641024 0.399427 0.308346
2011-06-12 0.573922 0.539285 0.098703 0.461480
2011-06-19 0.062978 0.939339 0.713087 0.380326
2011-06-26 0.422484 0.109185 0.459734 0.800468
2011-07-03 0.962368 0.632361 0.388565 0.503425
2011-07-10 0.802551 0.261161 0.590494 0.526307
2011-07-17 0.261447 0.686405 0.636970 0.622476
2011-07-24 0.634331 0.630028 0.069925 0.504036
... ... ... ... ...
2012-05-06 0.185331 0.375717 0.658463 0.697377
2012-05-13 0.273510 0.665318 0.756944 0.083542
2012-05-20 0.895984 0.850881 0.680869 0.987420
2012-05-27 0.450593 0.262195 0.458893 0.199141
2012-06-03 0.696102 0.332312 0.419764 0.338074
2012-06-10 0.113108 0.167605 0.812625 0.329429
2012-06-17 0.527418 0.087454 0.868973 0.744649
2012-06-24 0.977674 0.831538 0.410719 0.598423
2012-07-01 0.577802 0.141307 0.310356 0.276271
2012-07-08 0.772117 0.288240 0.820701 0.548857
2012-07-15 0.699628 0.467952 0.429433 0.304482
2012-07-22 0.782641 0.337854 0.561191 0.572241
2012-07-29 0.010225 0.962770 0.793041 0.166877
2012-08-05 0.895516 0.628526 0.782264 0.908301
2012-08-12 0.787210 0.698185 0.255306 0.741693
2012-08-19 0.042833 0.556469 0.165885 0.408108
2012-08-26 0.942076 0.377714 0.927170 0.119004
2012-09-02 0.567978 0.007891 0.777752 0.869950
2012-09-09 0.120134 0.417996 0.328654 0.484447
2012-09-16 0.833769 0.946456 0.594471 0.569707
2012-09-23 0.515544 0.090017 0.344200 0.498175
2012-09-30 0.419152 0.315412 0.683195 0.498630
2012-10-07 0.879582 0.958591 0.531812 0.051948
2012-10-14 0.488241 0.683242 0.096560 0.197295
2012-10-21 0.425213 0.279539 0.476436 0.492512
2012-10-28 0.238334 0.836782 0.901589 0.132700
2012-11-04 0.030562 0.797666 0.238895 0.550427
2012-11-11 0.875454 0.973046 0.457116 0.154175
2012-11-18 0.557967 0.895320 0.478239 0.448102
2012-11-25 0.075152 0.047344 0.650615 0.293129
[100 rows x 4 columns]
関連
-
ピロウズ画像色処理の具体的な活用方法
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リスト内のアイテムのインデックスを検索する
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] __init__.py は何のためにあるのですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
最新
-
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コンテナのための組み込み汎用関数操作
-
Python関数の高度な応用を解説
-
PythonによるExcelファイルの一括操作の説明
-
Python Pillow Image.save jpg画像圧縮問題
-
Python 入出力と高次代入の基礎知識
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない