使用jupyter Notebook网上编辑器进行代码编写,代码联想可以用table键
1、符号库导入,from string import punctuation
使用if i not in punctuation
2、对MongoDB数据库进行操作,
import pymongo
client = pymongo.MongoClient('localhost'.27017)
ceshi = client['ceshi']
item_info = ceshi['item_infoX']
3、字符串操作,要学会这种操作的套路
for i in item_info.find().limit(300)
4、数据清洗,使用列表的解析式
for i in item_info.find():
if i['area']:
area = [i for i in i['area'] if i not in punctuation]
...
5、为了防止数据出问题,首先备份数据
在jupyter 中新建terminal 输入命令
>mongod
>mongo
>show dbs 看数据库中都有哪些数据库(excel)
>use ceshi 转向某一个库中
>show tables 看ceshi库中都有几个collection(等同于excel的table)
>db.createCollection('item_infoY') 创建一个空的collection,名叫'item_infoY'
>db.item_infoX.copyTo('item_infoY') 将item_infoX中数据复制到item_infoY中
6、将数据清洗后,更新到数据库中
利用update数据
已有数据结构{id:1,name:0,info:3}
updata({id:1},{$set:{name:2}}) $:操作符,对set起作用
update({要修改的位置},{采用什么命令(修改方式),要修改什么字段})
7、数据可视化
库:charts
要画图的数据series,这是一个列表,列表内是多个字典,字典里有各种键值
series = [{
'name':' ...',
'data':[11], 这个数值一定要是列表
'type':'column'
}
。。。
]
8、对area_list列表(里边是发帖的区域)计数
先去重area_index = list(set(area_list)) set是集合命令,肯定没有重复的
计数:for index in area_index:
post_time.append(area_list.count(index)) 这里利用count命令,来实现计数
9、利用子函数生成charts需要的series数据
def data_gen(types):
for area,time in zip(area_index,post_times):
data = {
'name':area,
'data':[times],
‘type’:types
}
yield data 迭代器 替我们自动调整数据结构
简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用data_gen(types)不会执行data_gen函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行data_gen 函数内部的代码,执行到 yield b 时,data_gen 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。
10、生成图
series = [data for data in data_gen('column')] 列表解析式,比for循环快很多
charts.plot(series,show='inline', option= dict(title=dict(text='七日...'))) 固定结构