[英]How to create FusionCharts heatmap from a list of dictionaries?
我想在 python 中使用 FusionCharts 熱圖顯示以下數據:
[{'day_of_like': 'Monday', 'hours_of_like': 18, 'avg_of_likes': 8}, {'day_of_like': 'Monday', 'hours_of_like': 23, 'avg_of_likes': 5}]
但我在 FusionCharts 網站上找不到這方面的指南。 我怎樣才能使用 python 做到這一點?
seaborn.heatmap
來說明示例。pandas.json_normalize
將dict
的list
轉換為面板數據形式。pandas.DataFrame.to_json
來完成,它輸出一個 JSON 字符串,或者通過pandas.DataFrame.to_dict()
來完成,它輸出一個 python dict
。import pandas as pd
import seaborn as sns
# list of dictionaries
data = [{'day_of_like': 'Monday', 'hours_of_like': 18, 'avg_of_likes': 8}, {'day_of_like': 'Monday', 'hours_of_like': 23, 'avg_of_likes': 5}]
# convert to dataframe
df = pd.json_normalize(data)
# save the data to a csv if needed
df.to_csv('test.csv', index=False)
# display(df)
day_of_like hours_of_like avg_of_likes
0 Monday 18 8
1 Monday 23 5
# to json
df.to_json()
[out]:
'{"day_of_like":{"0":"Monday","1":"Monday"},"hours_of_like":{"0":18,"1":23},"avg_of_likes":{"0":8,"1":5}}'
# to dict
df.to_dict()
[out]:
{'day_of_like': {0: 'Monday', 1: 'Monday'}, 'hours_of_like': {0: 18, 1: 23}, 'avg_of_likes': {0: 8, 1: 5}}
# plot
sns.heatmap(df[['hours_of_like', 'avg_of_likes']])
根據共享的數據,看起來您必須復制 day_of_like 屬性,您需要設置一個唯一值或為每個重復鍵設置一個唯一值,這里是 FusionCharts 中相同的 JavaScript 表示 - http://jsfiddle.net /j3r0avhz/3/
"dataset": [{
"data": [{
"rowid": "hl",
"columnid": "1",
"value": "18",
"colorRangeLabel": "Bad"
},
{
"rowid": "al",
"columnid": "1",
"value": "8",
"colorRangeLabel": "Bad"
},
{
"rowid": "hl",
"columnid": "2",
"value": "23",
"colorRangeLabel": "Good"
},
{
"rowid": "al",
"columnid": "2",
"value": "5",
"colorRangeLabel": "Bad"
}
]
}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.