1.Python的源码Tornado框架实现数据可视化
2.pythonxlrdè½è¯»å¤å°è¡
Python的Tornado框架实现数据可视化
这篇文章主要介绍了举例讲解Python的Tornado框架实现数据可视化的教程,Tornado是一个异步的高人气开发框架,需要的朋友可以参考下
所用拓展模块
xlrd:
Python语言中,读取Excel的源码扩展工具。可以实现指定表单、源码指定单元格的源码读取。
使用前须安装。源码c 工控组件源码
=。源码叮咚买菜插件源码=看起来好像基本没人值班,源码对,源码就是源码这样。
大家都好懒T。源码T
Sign...
简单分析一下,源码
考勤记录表是源码文件的第三个sheet
第三行有起止时间
第四行是所有日期的数字
接下来每两行:第一行为用户信息;第二行为考勤记录
思路
决定用3个collection分别储存相关信息:
user:用户信息,包含id、源码金芙蓉指标源码name、源码dept
record:考勤记录,源码包含id(用户id)、y(年)、libusb库源码解析m(月)、d(日)、check(打卡记录)
duty:值班安排,包含id(星期数,租凭小程序源码例:1表示星期一)、list(值班人员id列表)、user_id:[start_time,end_time](用户值班开始时间和结束时间)
读取xls文件,将新的考勤记录和新的用户存入数据库。
根据年月日参数查询对应record,查询当天的值班安排,匹配获得当天值班同学的考勤记录。将值班同学的打卡时间和值班时间比对,判断是否正常打卡,计算实际值班时长、实际值班百分比。
之后输出json格式数据,用echarts生成图表。
分析当月、当年的考勤记录同理,不过可能稍微复杂一些。
所有的讲解和具体思路都放在源码注释里,请继续往下看源码吧~
源码
main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os.path
import tornado.auth
import tornado.escape
import tornado.mand_line()
monChinesecharactersandseporatorschinesePattern=ur'[\u4e-\u9fff.%s]+'%(''.join(seps))
è±æå°±ç¨ASCIIå¯æå°å符çèå´æ¿ä»£ï¼å¸¸è§ä¸æå符çèå´æ¯\u4e-\u9fffï¼é£ä¸ªsepsæ¯åé¢æå°è¿çè¶ åºGBKèå´çä¸äºå符ãé¤äºç®åçåå²ï¼æè¿éè¦å¤çåªæä¸æå没æè±æåãåªæè±æå没æä¸æåçæ åµï¼å¤æé»è¾å¦ä¸ï¼
defsplit_name(name):?"""Split[Englishname,Chinesename].
Ifoneofthemismissing,Nonewillbereturnedinstead.
Usage:engName,chName=split_name(name)?"""
matches=re.match('(%s)(%s)'%(asciiPattern,chinesePattern),name)?ifmatches:?#Englishname+Chinesenamereturnmatches.group(1).strip(),matches.group(2).strip()?else:
matches=re.findall('(%s)'%(chinesePattern),name)
matches=''.join(matches).strip()ifmatches:?#Chinesenameonly
returnNone,matcheselse:?#Englishnameonlymatches=re.findall('(%s)'%(asciiPattern),name)?return''.join(matches).strip(),Noneå¾å°äºä¸æåä¹åï¼æéè¦åå²æå§ååï¼å 为任å¡è¦æ±ä¸éè¦æå§ååå²å¾å¾æç¡®ï¼æå°±æç §å¸¸è§çä¸æåå§ååå²æ¹å¼æ¥åââ两个åorä¸ä¸ªåç第ä¸ä¸ªåæ¯å§ï¼å个åçå两个åæ¯å§ï¼åå带åé符çï¼å°æ°æ°æååï¼åé符åæ¯å§ï¼è¿éç¨å°äºåé¢çget_clean_ch_stringå½æ°æ¥ç§»é¤åé符ï¼ï¼åååé¿ä¸äºåä¸å¸¦åå²ç¬¦çï¼å设æ´ä¸ªå符串é½æ¯ååãï¼æ³¨æè±è¯çfirstnameæçæ¯åï¼lastnameæçæ¯å§ï¼ï¼
defsplit_ch_name(chName):?"""SplittheChinesenameintofirstnameandlastname.
*IfthenameisXYorXYZ,Xwillbereturnedasthelastname.
*IfthenameisWXYZ,WXwillbereturnedasthelastname.
*Ifthenameis...WXYZ,thewholenamewillbereturned
asthelastname.*Ifthenameis..ABC*XYZ...,thepartbeforetheseperator
willbereturnedasthelastname.Usage:chFirstName,chLastName=split_ch_name(chName)?"""
iflen(chName)4:?#XYorXYZchLastName=chName[0]
chFirstName=chName[1:]?eliflen(chName)==4:?#WXYZ
chLastName=chName[:2]
chFirstName=chName[2:]?else:?#longer
cleanName=get_clean_ch_string(chName)
nameParts=cleanName.split()printu''.join(nameParts)iflen(nameParts)2:?#...WXYZ
returnNone,nameParts[0]chLastName,chFirstName=nameParts[:2]?#..ABC*XYZ...
returnchFirstName,chLastNameåå²è±æåå°±å¾ç®åäºï¼ç©ºæ ¼åå¼ï¼ç¬¬ä¸é¨åæ¯åï¼ç¬¬äºé¨åæ¯å§ï¼å ¶ä»æ åµææ¶ä¸ç®¡å°±è¡ã
python读åæ件å æå¤å¤å°è¡å符
è¡ãpython读åæ件å æå¤è¡å符ãPythonç±è·å °æ°å¦å计ç®æºç§å¦ç 究å¦ä¼çåå¤Â·èç½èå§äºå¹´ä»£å设计ï¼ä½ä¸ºä¸é¨å«åABCè¯è¨çæ¿ä»£åãPythonæä¾äºé«æçé«çº§æ°æ®ç»æï¼è¿è½ç®åææå°é¢å对象ç¼ç¨ãPythonè¯æ³åå¨æç±»åï¼ä»¥å解éåè¯è¨çæ¬è´¨ï¼ä½¿å®æ为平å°ä¸åèæ¬åå¿«éå¼ååºç¨çç¼ç¨è¯è¨ã
Python使ç¨xlrd模åæä½Excelæ°æ®å¯¼å ¥çæ¹æ³æ¬æå®ä¾è®²è¿°äºPython使ç¨xlrd模åæä½Excelæ°æ®å¯¼å ¥çæ¹æ³ãå享ç»å¤§å®¶ä¾å¤§å®¶åèãå ·ä½åæå¦ä¸ï¼
xlrdæ¯ä¸ä¸ªåºäºpythonçå¯ä»¥è¯»åexcelæ件ç产åãåpyExceleratorç¸æ¯ï¼xlrdç主è¦ç¹ç¹å¨äºè¯»çåè½æ¯è¾å¼ºå¤§ï¼æä¾äºè¡¨åè¡æ°ãåæ°ãåå æ ¼æ°æ®ç±»åçpyExcelratoræ æ³æä¾ç详ç»ä¿¡æ¯ï¼ä½¿å¾å¼å人åæ é¡»äºè§£è¡¨åçå ·ä½ç»æä¹è½å¯¹è¡¨åä¸çæ°æ®è¿è¡æ£ç¡®çåæ转æ¢ã
ä½æ¯xlrdä» ä» æä¾äºè¯»åexcelæ件çåè½ï¼ä¸è½åpyExcelratoré£æ ·çæexcelæ件ã
Python对äºoffice软件excelç读åä¸è¬é½éç¨xlrdåºï¼
1)
æå¼å·¥ä½è¡¨ï¼
代ç å¦ä¸:
import
xlrd
wb
=
xlrd.open_workbook('workbook_name')
wb
=
xlrd.open_workbook(file_contents
=
data)
2)
æ£æ¥å·¥ä½è¡¨å称ï¼è·åå·¥ä½è¡¨ï¼
代ç å¦ä¸:
wb.sheet_names()
sh
=
wb.sheet_by_index(0)
sh
=
wb.sheet_by_name(u'Sheet1')
3)
æ¥è¯¢æ°æ®ï¼
i.
è·åè¡æ°ï¼åæ°ï¼
代ç å¦ä¸:
rows
=
sh.rows
cols
=
sh.cols
ii.
æ¥è¯¢è¡æ°æ®ï¼
代ç å¦ä¸:
sh.row_values(row_num)
iii.
æ¥è¯¢åæ°æ®ï¼
代ç å¦ä¸:
sh.row_values(col_num)
iv.
æ¥è¯¢åå æ ¼æ°æ®ï¼
代ç å¦ä¸:
sh.cel(row_num,
col_num).value
å¸ææ¬ææ述对大家çPythonç¨åºè®¾è®¡ææ帮å©ã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶ä»ç»çå ³äºpythonxlrdè½è¯»å¤å°è¡çå ¨é¨å 容äºï¼å¸æ对大家ææ帮å©ï¼å¦æä½ è¿æ³äºè§£æ´å¤è¿æ¹é¢çä¿¡æ¯ï¼è®°å¾æ¶èå ³æ³¨æ¬ç«ã