这里我们以一个市场调研问卷的数据作为例子,一步步的实现使用Python进行数据分析的目的。
环境设置:
- 数据来源:点击查看
- 平台环境:Windows10 (64-bit)
- Python环境:Python 3.5.1 |Anaconda 4.0.0 (64-bit)
- 编辑环境:Anaconda自带的Spyder
- 其他说明:由于只有数据,没有该项目的问卷,选项是根据文档中的分析部分反推的,所以可能不准确,所有的分析结果仅做数据分析学习使用,不可当真。另外侵删(我说说而已,作者不会介意吧)。
01.看数据情况
原始数据这里我们可以观察到,原始数据的格式是比较不规范的。
第一是标题中有很多合并单元格,第二是选项以ABCD的方式列出。一般情况下市场调研的问卷会将多选题(合并单元格)列为5.1/5.2/5.3的形式,方便分析;而选项则更多以1234的数字或者01形式的二分法录入为录入基准(录数字比录字母容易且不容易出错,另外一个好处就是方便使用SPSS做分析)。
为了标题的完整性,我们稍微处理一下数据,使数据显示成这样:
调整后的数据就是拆分了合并单元格,并填充了标题(注意,这里填充的标题并不符合规范,不过who care,我们还有Python呢,留给它来处理吧,顺便练练手)。将文件存储为"贵州学生网购数据.csv"。
02.利用Python导入数据
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 25 19:00:16 2016
@author: shanlin
"""
#导入数据分析所需要的两个库
import numpy as np
import pandas as pd
#导入数据
int_data=pd.read_csv("贵州学生网购数据.csv",
encoding='gb2312',
index_col="问卷编号")
这里值得强调的三件事:
- 开头的utf-8,是表示文本编辑中可以用中文的,以免出现乱码。
- 使用pd.read_csv读取数据中的encoding='gb2312'也是避免导入的数据中含有中文出现乱码的。当然,有时候或许需要使用utf-8或者gbk。
- index_col="问卷编号",是制定问卷编号为列索引。如果需要指定层次化索引(简单理解就是多列作为索引),只需将index_col的参数传入为一个列表即可,如:index_col=['问卷编号', '访问员编号'],就将问卷编号和访问员编号设置成了索引。
03.输出数据结果
#查看导入的数据,默认输出前5条数据
int_data.head()
Python的输出结果
这里我们观察到两点(实际上是pandas的处理结果):
- 我们那些重复的列标题,已经被Python处理过了,如5已经变成了“5/5.1/5.2/5.3……”
- 那些空白值已经变成了NaN(not a number),即缺失值。
我们可以用type函数查看当前的数据类型。
#查看数据类型
type(int_data)
数据类型是pandas的DataFrame
网友评论