私は2ヶ月の温度データを持っており、その日の温度限界に応じて毎日赤色または緑色のいずれかで表示するカレンダーヒートマップを作成しようとしています。私はこの目的のために、特定の日が緑か赤かに関する情報を持つ辞書を作成しました。私はまた、パンダのデータフレームを作成しました。カレンダーPython辞書またはパンダのデータフレーム/シリーズのヒートマップを2ヶ月間
私のデータベーステーブルのデータはこのように見えます。 2つの列のみから構成されています。
import datetime
import calendar
import mysql.connector
import datetime
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mysql.connector import errorcode
cnx = mysql.connector.connect(user='robbin', password='xxxx', database='rob')
cursor = cnx.cursor()
start_time = 1464739200
query = ("SELECT usec ,`temp_data` "
"FROM rob_tab WHERE usec >= %s "
"AND usec <= %s")
for i in range(61):
current_start_ts = (start_time + (i*86400))
current_day = datetime.datetime.fromtimestamp(current_start_ts)
current_end_ts = (start_time + (i*86400)) + 86399
cursor.execute(query, (current_start_ts , current_end_ts))
rows = cursor.fetchall()
rows_arr = np.array(rows)
print 'type of the rows_arr: ', type(rows_arr)
data = {}
if len(rows_arr) == 0:
data[current_day] = 'grey'
else:
for item, index in rows_arr:
if index >= 34 or index <= 20:
data[current_day] = 'red'
break
else:
pass
data[current_day] = 'green'
daf = pd.DataFrame(data.items(), columns=['Date', 'DateValue'])
が私は好きで、以下のいくつかの行を試してみました:日付と温度値
usec temp_data
1464739200 32
1464825600 31.32
1464912000 33.2
1464998400 29.56
.
.
.
.1469923200 28.45
辞書には、次のように
data is here: {datetime.datetime(2016, 6, 1, 2, 0): 'grey'}
data is here: {datetime.datetime(2016, 6, 2, 2, 0): 'green'}
.
.
.
data is here: {datetime.datetime(2016, 7, 29, 2, 0): 'green'}
data is here: {datetime.datetime(2016, 7, 30, 2, 0): 'green'}
data is here: {datetime.datetime(2016, 7, 31, 2, 0): 'green'}
私のコードがあるのDateTimeするエポック時刻を変換した後、このようになります。上記コードで
for item, index in data.iteritems():
print 'index::', index
# print 'temp values in list: ', item
events = pd.Series(data[current_day], index=dat)
print 'events::', events
calmap.yearplot(events, monthlabels=['june', 'july'])
and i got the following error:
index:: grey
events:: 2016-06-01 02:00:00 grey
dtype: object
plot_data = np.ma.masked_where(np.isnan(plot_data), plot_data)
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
私は1つの例を発見し、この例へのリンクは 'Matplotlib and Numpy - Create a calendar heatmap' です。私はこの例を見ていますが、私の場合と少し違うので、私のコードにそれを変更することができませんでした。
私の場合、辞書またはパンダのデータフレームを持っていましたが、表示するのに2ヶ月しかかかりませんでした。私はこの問題をpandasデータフレームまたは辞書だけを使って解決したいので、私の質問は私が言及した例とは全く違うものになります。なぜなら、彼はパンダをまったく使用したくないからです。
誰かが私に手伝ったり、カレンダーのヒートマップを作成してくれたら嬉しいです。
あなたは、チャート/画像がどのように見えるかの例を持っていますか? –
@ScottBostonはい私は自分の質問を編集し、どのように見えるかをイメージに追加します。助けてくれてありがとう – robbin
明確な問題の説明はありません。また、例を見つけた場合は、その例にリンクして、人々が実際にあなたのニーズに適応させるのを助けることができます。最後に[mcve]を指定すると、ヘルプを劇的に入手する機会が増えます。 – ImportanceOfBeingErnest