4

航空券の空席状況の離散時間データがcsv形式である。これは、出発時間枠と到着時間枠の組み合わせに対するチケットの可用性を表すために使用されます。私の一日が4つの時間帯に分かれているとしましょう -

12:01 AM to 6:00 AM, 
6:01 AM to 12:00 PM, 
12:01 PM to 6:00 PM,
6:01 PM to 12:00 AM

1 はその出発と到着の組み合わせに利用可能なチケットがあることを意味し、0 はそうでないことを意味します。この例では、チケットがすべての出発と到着の組み合わせで利用可能であるとしましょう。csv ファイルには次のデータが含まれます。

1,1,1,1,1,1,1,1,1,1

このデータは、このマトリックスを表すために使用されます (組み合わせの一部は、24 時間の非論理的な時間の組み合わせであるため、ここではゼロになることに注意してください)。

                    Departure time period           
                    12:01 AM to 6:00 AM | 6:01 AM to 12:00 PM  | 12:01 PM to 6:00 PM |  6:01 PM to 12:00 AM|
Arrival time period ------------------- | ---------------------|---------------------|---------------------|
12:01 AM to 6:00 AM                   1 |                     0|                    0|                    0|
6:01 AM to 12:00 PM                   1 |                     1|                    0|                    0|
12:01 PM to 6:00 PM                   1 |                     1|                    1|                    0|
6:01 PM to 12:00 AM                   1 |                     1|                    1|                    1|

ファイルには、このcsvデータが数日間含まれています。このデータを、日付がキーであり、空室状況の組み合わせがリストになっているディクショナリとして読み込みました。でデータ処理を行っていPython 2.7ます。特定の日について、日付キーを使用して空き状況のリストを取得できるようになりました。

今、私は2つの質問があります:

  • データをマトリックス型のデータ構造に変換するにはどうすればよいですか。本質的に、これには、リストを下三角行列と対角要素に変換することが含まれます。reshape 関数を使用してみましnumpyたが、この結果は得られません。

  • マトリックスを変換したら、すべての 1 を緑の四角、0 を赤の四角として、テーマ別グリッドとして可用性を図式的に表現したいと思います。これはPythonで達成できますか? どのように?

をディクショナリとして読み込んでからcsv、可用性要素をリストに格納するのが、かなり簡単に思える方法だと思いました。これを行うためのより賢い方法があると思われる場合は、アプローチを変更してください。

皆さん、何か考えはありますか?!?

4

1 に答える 1

2
import numpy as np
import matplotlib.pyplot as plt

data = [1,1,1,1,1,1,1,1,1,1]
arr = np.zeros((4,4))
indices = np.tril_indices(4)
arr[indices] = data
print(arr)

# array([[ 1.,  0.,  0.,  0.],
#        [ 1.,  1.,  0.,  0.],
#        [ 1.,  1.,  1.,  0.],
#        [ 1.,  1.,  1.,  1.]])


plt.imshow(arr, interpolation='nearest', cmap=plt.get_cmap('RdYlGn'))
plt.show()

プロット

ここに画像の説明を入力

于 2013-07-08T01:08:03.777 に答える