慢慢前行,先写一下对整体的理解,待后面修正。
数据分析的步骤:
一、数据加载,获取数据源
首先将数据导入加载到分析工具。数据从外部导入分为两种方式,文本和数据库。
数学示例和案例中一般是手工数据。
1)导入文本格式数据
pandas中的解析函数:
read_csv 默认分隔符为逗号
read_table 默认分隔符为('\n')
read_fwf 读取定宽列格式数据(没有分隔符)
read_clipboard 读取剪贴板中的数据。在将网页转为表格中很有用
2)json数据导入
import json
path ='/Users/apple/Desktop/jsusers.txt'
import jsonrecords=[json.loads(line) for line in open(path)]
(jsusers是json格式数据)
3)网络数据,xml ,html
数据获取的方法基本是网络访问(urllib,urlib2)+xpath,也即Python爬虫的方式。
我的做法,还是先爬取存储数据,再到pandas中分析。疑问:这方法也不符合分层的原理。网络获取数据和数据分据处理混大一起。好处是能即时获取到最新数据吗?
4)数据库数据
(暂未涉及,后面补充)
二、数据处理、规整
昨天开始使用anaconda中的spyder,好处对于在处理的数据和数据类型可以直观看到。
数据处理,是数据分数的关键,我理解有①数据类型处理; ② 字段类型处理;③ 数据分组聚合;④ 其他基本处理如缺省值、字段拆分等。
- 数据类型处理
一开始就意识到了,但在IPtython中没有直观影响,导致在进行图表展现时报错。
如:json数据导入的数据类型是list
使用groupby分组统计后得到的数据类型是Series。(一列是index)
reg_data = frame.groupby('regtime2')['nickname'].count()
这里数据类型处理,我主要是指DataFrame 和 Series
- 字段类型处理
指的是DataFrame中列的类型。目前使用的json数据,所以导入的日期类型需要转换。
data2['regd']=to_datetime(adata2['regtime2'],format='%Y-%m')
- 数据分组聚合
理解为SQL中的聚合函数,Excel中的分类汇总。是数据各类可视化展现的基础。
三、可视化展现
主要是各种图表:散点图、折线图、饼图、柱形图、直方图等。
我现在处理分析的是简书用户信息,爬取的数据中有用户注册时间字段,就想到用图来展现简书用户注册量的变化。步骤如下:
0)爬取用户信息,(包含用户加入简书时间)
1)数据导入DataFrame,对 “注册时间”列进行分段处理
2)groupby分类汇总,得到一个Series
3)构造出新的DataFrame
4)图形展现
plt.plot(adata2['regd'],adata2['users'],'-')
(目前试着分析选择的数据只有1040条,还没有加载那个11W+的数据)
问题:绘图函数的一些参数,还没有了解,图例、坐标也没有很好显示。
四、统计方法
这是我的弱项,之前没有接触,需要多了解一些理论知识。