python我的数据生活
以下是我用2018年数据生活总结,作为2019年一季度学习python的总结实践。
1.心情
我想把心理健康放在第一位来论述。
身体生病了我们会打针吃药找医生,可心理生病了如何医治,至少以国内目前的水平,这方面的意识还不足。我把每个月的心理健康用1-10分打分,6分为及格表示心理稳定,6分以下会有些失落,3分以下就是极度难受了,6分以上会比较开心。
Annual Mental Health Review.jpg
整年的心理状况比较OK,除了年中的小挫折难受了一阵,其他时间我觉得自己都是心理健康的。
#!/usr/bin/python
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
mental_state=pd.DataFrame({'Month':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
'Mood':[6,6,7,6,6,5,5,6,6,6,7,7],
})
mental_state.plot(y=['Mood'])
plt.title("Annual Mental Statement Review",fontsize=16,fontweight='bold')
plt.yticks(np.arange(11,step=2))
plt.xticks(np.arange(13),mental_state['Month'])
plt.savefig('Annual Mental Health Review.jpg')
plt.show()
2.观影读书情况
看完电影电视或者书在豆瓣上mark成为了习惯,每年可以回顾今年的收获。看电影可以感受别人的情感,看书可以感受别人的思想,让我懂得这个世界多样化的存在。
观影情况:
18年一共看了35部影视作品,包括微电影,电影,电视剧,纪录片和综艺节目,大部分还是电影。1月高峰期看了8部,8月和12月虽然显示没有mark,但是应该也有少量电视剧或者综艺在看的进行中,因为豆瓣上我标记的是完成时间。
df=pd.read_excel('df_movie.xlsx')
df_2018=df.loc[(df['DATE']>datetime(2018,1,1))&(df['DATE']<datetime(2019,1,1))]
df_2018=df_2018.reset_index(drop=True)
MONTH=[]
for i in range(len(df_2018)):
i=df_2018['DATE'].at[i].month
MONTH.append(i)
df_2018['MONTH']=MONTH
grouped=pd.DataFrame(df_2018['DATE'].groupby([df_2018['MONTH'],df['TAG']]).count())
grouped=grouped.unstack().fillna(value=0)
output=grouped['DATE']
#将MONTH索引变成列
output['MONTH']=output.index
output=output.reset_index(drop=True)
#增加12个月的缺失数据
fullmonth=pd.DataFrame({'MONTH':[1,2,3,4,5,6,7,8,9,10,11,12]})
output=output.merge(fullmonth,on='MONTH',how='outer').fillna(0).sort_index(by=['MONTH'],ascending=True).set_index('MONTH')
#输出图形
output.plot.bar(stacked=True,color=['green','cyan','steelblue','springgreen','slategray'])
plt.title("Annual Moive Watched Review",fontsize=16,fontweight='bold')
plt.xticks(np.arange(13),['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],rotation=0)
plt.ylabel('movie count')
plt.xlabel('')
plt.savefig('Annual Movie Watch Review.jpg')
plt.show()
原始数据是从豆瓣上爬取的,爬取方法在这里python爬取豆瓣个人主页观影和读书记录
读书情况:
18年看了26本书,8月没怎么看影视剧但是看书是高峰,8月看了5本书。12月没有书也没有电影记录,说明19年1月份的会比较多。
df=pd.read_excel('df_book.xlsx')
df_2018=df.loc[(df['DATE']>datetime(2018,1,1))&(df['DATE']<datetime(2019,1,1))]
df_2018=df_2018.reset_index(drop=True)
MONTH=[]
for i in range(len(df_2018)):
i=df_2018['DATE'].at[i].month
MONTH.append(i)
df_2018['MONTH']=MONTH
grouped2=pd.DataFrame(df_2018['BOOK'].groupby(df_2018['MONTH']).count())
grouped2['MONTH']=grouped2.index
output2=grouped2.reset_index(drop=True)
#增加12个月的缺失数据
output2=output2.merge(fullmonth,on='MONTH',how='outer').fillna(0).sort_index(by=['MONTH'],ascending=True).set_index('MONTH')
output2.plot.bar(color='deepskyblue')
#输出图形
plt.title("Annual Book Read Review",fontsize=16,fontweight='bold')
plt.xticks(np.arange(13),['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],rotation=0)
plt.ylabel('book count')
plt.xlabel('')
plt.savefig('Annual Book Read Review.jpg')
plt.show()
原始数据是从豆瓣上爬取的,爬取方法在这里python爬取豆瓣个人主页观影和读书记录
3.运动情况
数据采集主要来自运动手环,然后运动APP上会总结出每月的平均步数和平均活动时间。
Annual Training Exercises Review.jpg
上半年手环会带一整天,下半年为了记录运动情况我就是跑步的时候才带上手环,所以下半年记录的是比较真实的运动情况。正常说来平均步数越多平均活动时间也应该越多,但是到了后面发现显示时间的折线图下降了很多,说明我加快跑步速度有所成效。
fitness=pd.DataFrame({'Month':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
'Avg Steps':[5227,9055,6928,7419,4049,5052,4266,3919,5465,4626,3744,4720],
'Avg Activity/min':[57,96,73,83,45,53,37,29,45,36,29,50]
})
fitness
x=fitness.index
y1=fitness['Avg Steps']
y2=fitness['Avg Activity/min']
#画柱子
fig = plt.figure()
ax1 = fig.add_subplot(111)#将画布分割成1行1列,图像画在从左到右从上到下的第1块
ax1.bar(x, y1,color='deepskyblue')
plt.xticks(np.arange(13),mental_state['Month'])
plt.yticks(np.arange(10000,step=1000))
ax1.set_ylabel('Average Steps',fontsize='14')
ax1.set_title('Annual Training Exercises Review',fontsize='16',fontweight='bold')
#画折线图
ax2 = ax1.twinx()
ax2.plot(x, y2, 'purple',marker='*',ms=10)
for x, y ,z in zip(x,y2,y1):
plt.text(x, y+0.3, str(y), ha='center', va='bottom', fontsize=8,rotation=0)
ax2.set_ylabel('Average Activity Time by mins',fontsize='14')
plt.savefig('Annual Training Exercises Review.jpg')
plt.show()
4.其他情况
生活里还有好多细碎的小事,而这些细碎的小事确实组成了生活本身。从这些小事里我积累着自己的创意和灵感,将日子过得诗一样美好。
other activities.jpg
只闻花香,不谈悲喜,喝茶读书,不争朝夕。
继续好好生活,继续学习python。
阳光暖一点,再暖一点,日子美一些,再美一些。
from pyecharts import WordCloud
other_activities = pd.DataFrame({'activity':['haircut','writing','liveshow','recipe','drawing','melody','mobile game','dubbing','travel'],
'frequency':[4, 11, 0, 13, 30, 1, 1, 24, 4]
})
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", other_activities['activity'], other_activities['frequency'], word_size_range=[20, 100])
wordcloud.render('other activities.html')