目前在做P2的项目,感觉自己在处理数据方面的经验还是很有所欠缺的,很多时候基础不够牢固,写不出来自己想要完成的步骤,及时进行梳理和总结来提高自己的编码能力。
数据处理的过程 Question-Wrangle-Explore-Draw conclusion-Communicate
问题一定要明确,这要求一名分析师应当熟悉行业信息,而且有一定的观察能力,
数据采集+数据整理(DATA ACQUSITION+ DATA CLEANING)
数据挖掘,数据分析 统计学的基础
数据整理:导入+重新组合
数据导入根据文件类型的不同可以分为 1.读取文本文件及其它磁盘存储格式 2.加载数据库中的数据 3.利用Web API操作网络资源
常见的数据文件类型:
1. CSV (comma seperated values) 逗号分隔值文件 默认分隔符为逗号, pd.read_vsv('filename')命令直接导入, 逐行读取 nrow= 逐块读取chunksize= 、
2. JSON(JavaScript Object Notation) :更加灵活 JSON接近Python代码,可以利用json库对JSON文件进行相关的操作 json.loads 读取 json.dumps将Python对象转换为JSON格式
3.XML和HTMLshuju lxml库进行处理 HTML中的标签是我们处理的目标
4. XLS excle文件 xlrd包进行处理
5.SQL等数据库导入
数据类型的转换处理
1 from datetime import datetime as dt 2 def parse_date(date): 3 if date==' ' : 4 return None 5 else: 6 return dt.strptime(date, '%Y-%m-%d') 7 def parse_maybe_int(i): 8 if i == ' ' : 9 return None 10 else: 11 return int(i)
read_csv命令默认的导入数据类型为字符串,需要按照实际应用情况进行数据类型的转换,转换为布尔值和整数值,浮点数
datetime是关于日期创建的类,完成日期的相关操作
dic , set 与 list
创建: paid_students= {} students=set() enrollments=list[] (也可以使用list迭代器命令直接 省略循环语句和添加语句)
enrollments= [] f=open('enrollments.csv', 'rb') reader= unicodecsv.DictReader(f) for row in reader: enrollments.append(row) f.close() 可以简化为 with open(enrollments.csv', 'rb') as f: reader = unicodecsv.DictReader(f) #DictReader 读取每行数据并保存为字典格式 enrollments = list(reader) #list迭代器命令直接生成一个列表
筛选:if条件句
增添元素:for 循环遍历数据源 enrollments['account_key'] 定位数据
dic: paid_students[account_key] = enrollment_date #直接默认account_key 为key值 enrollment_date 为value值
set:students.add(enrollment['account_key'])
显示长度: len( )