Pathon做数据分析

数据分析流程

  1. 识别需求
    识别信息需求是确保数据分析过程有效性的首要条件,可以为收集数据、分析数据提供清晰的目标。
  2. 收集数据
    有目的的收集数据,是确保数据分析过程有效的基础。
  3. 分析数据(数据清洗)
    分析数据是将收集的数据通过加工、整理和分析、使其转化为信息,通常用方法有:
  4. 可视化
    将数据变得一目了然
    老七种工具,即排列图、因果图、分层法、调查表、散布图、直方图、控制图;
    新七种工具,即关联图、系统图、矩阵图、KJ法、计划评审技术、PDPC法、矩阵数据图。

概念(定性数据和定量数据

定性数据和定量数据的区别如下:

  1. 是否具有数值特征:
    1. 定性数据没有数值特征,不能对其数据进行数学运算。定性数据分为分类数据和顺序数据两类。
      1. 定类数据:如反映“职业”、“教育程度”等现象的属性特点的数据,只能用来区分事物,而不能用来表明实物之间的大小、优劣关系。
      2. 定序数据:如象“教育类别”这样的变量称为顺序变量,相应的观察结果就是顺序数据。说明事物有序类别的一个名称,这类变量的具体表现就是顺序数据。顺序数据的数据之间虽然可以比较大小,却无法计算相互之间的大小、高低或优劣的距离。
    2. 定量数据:反映“天气温度”、“月收入”等变量可以用数值表示其观察结果,而且这些数值具有明确的数值含义,不仅能分类而且能测量出来具体大小和差异。这些变量就是定量变量也称数值变量,定量变量的观察结果成为定量数据。
  2. 计量精度不同
    1. 定性数据只能粗略区分事物特征,无法计算比较相互间大小,计量精度不高。
    2. 定量数据作为统计研究的主要资料, 不仅能分类而且能测量出来具体大小和差异,其计量精度远远高于定性数据。
  3. 统计方法不同
    1. 定性数据多采用描述性统计分析方法,非参数检验等。
    2. 定量数据可采用描述性统计分析,也可采用推断性统计分析、参数检验或统计模型。

在这里插入图片描述

例:
这是一列定性数据,但是很明显,这列数据是需要计算建模的数据
这是一列定性数据
转换为具有运算特征的定量数据

x['Biweekly High Rate']=x['Biweekly High Rate'].map(lambda v:v.replace("$",'')).astype(float)

思路

在读取文件时可以用导入csv包 (专门处理csv)

它会把每一条数据都包装成一个list 以便下一步操作

with open('ebola.csv','r') as a:
	#按每一行读取
	 for i in csv.reader(a):
	     print(i)  #每一条数据都是一个list
	 #读取为字典型  样式:OrderedDict([('Year', '1968'), ('Males', '1118.5')])
	 #可以使用   i['Year']取值
	 for i in csv.DictReader(a):
        print(i)

在数据分析时经常遇到排序问题,最常见的就是利用时间对数据进行排序

如果要用时间作图作为x轴或者y轴 一定要使用datetime进行时间转换(原因请看下一个案例)
转换时间的方式

a='2014-09-26'
x=time.strptime(a,'%Y-%m-%d')
z=dt.datetime.strptime(a,"%Y-%m-%d").date()
y=dt.datetime.strptime(a,"%Y-%m-%d").time()

两种方法都可以排序

import time

datalist=sorted(data,key=lambda x:time.strptime(x[2],'%Y-%m-%d'),reverse=True)
print(datalist)

*使用matplotlib.pyplot绘图 (图像显示错误)

这个问题很重要显示错误和显示不出,可能都是这个问题一定要时刻注意

#y轴需要的数据

#未修改代码
#gy=[x[3] for x in Guinea]
#ny=[x[3] for x in Nigeria]
#sy=[x[3] for x in SierraLeone]
#修改代码
gy=[float(x[3]) for x in Guinea]
ny=[float(x[3]) for x in Nigeria]
sy=[float(x[3]) for x in SierraLeone]


plt.plot(gx,gy,'r-')

plt.show()

下图为修改代码之前 发现y轴的数据,并没有自动解析 一个段一个段出来
在这里插入图片描述
分析:
仔细看了一下学习时候的代码,发现在使用matplotlib.pyplot绘图时,x轴或者y轴的数据都是可以做递增的数据 比如 坐标x轴上有:1,2,3,4,5,6,7,8 x轴上的数就可以解析为 2 4 6 8
然而原始数据不做处理的时候,类型都是str,可能是str不能做出自动解析

数据分析必用工具 pandas

首先了解pandas的索引方式极其基本使用方法以便数据的清洗

主要有两种: .loc标签索引 .iloc位置索引 (先按标签索引进行尝试操作,再位置)
现在有一个pandas数据df

#取出第一行
df[0:1]
#利用列名
df[  ['列名1','列名2' ]   ]
#最常用的位置索引方法
df.iloc[0:2,0]   #取出  0-2(不包括2)行的第一列数据
pandas怎么精确的取出带有什么数据的某一行或者一列的值

ps:比如取出 索引为长郡中学的行

a.loc[a.index == '长郡中学']

ps:比如取出 索引为长郡中学或者长沙一中的行,支持运算符 &(and) |(or)
这里注意:里面是两个元组样式的,否则报错

a[  (a.index == '长郡中学') | (a.index=='长沙市第六中学')]

当然也支持这样:

a[   a['列名']==?    ]
#pandas-如何得到某一个值所在的行
df[df['列名'].isin([相应的值])]
修改索引名,列名,数据合并

这一点顺便一提,很多时候不同数据整合要统一才能使用merge()合并

#使用rename()修改
a=dd.count().rename(index={'师大附中':'湖南师大附中',
	'长沙市第一中学':'长沙市一中'},columns={'序号':'人数'}) 

还有一种方法时候修改大多数索引 set_index()
数据合并
参考sql中的inner left_inner right_inner

#参数说明:数据1  数据2   左键   右键   连接方式    默认以重合列做键
pd.merge(a,b,left_on='key1',right_on='key2',how='right')
pandas带有自动转换类型的方法
#ps:
	data[''].astype(int)
	#时间
	pd.to_datetime(data_us['dt'])
DataFrame.plot(*args, **kwargs)

参数解读(官方

  1. kind:str
    str:
    ‘line’:折线图(默认)
    ‘bar’:垂直条形图
    ‘barh’:水平条形图
    ‘hist’:直方图
    ‘box’:箱线图
    ‘kde’:内核密度估计图
    ‘density’:与’kde’相同
    ‘area’:面积图
    ‘pie’:饼图
    ‘scatter’:散点图
    ‘hexbin’:六边形图。

  2. grid : boolean(是否显示网格)

  3. fontsize int(字体大小)

  4. ax(可以用来设置画布大小)

  5. stacked:boolean(是否纵向显示数据)

    例:
    在这里插入图片描述

DataFrame.hist()&Series.hist()

常用参数

  1. bins:int
    分成几块
  2. by:对象,可选
    如果通过,则用于形成单独组的直方图。
  3. figsize 元组
  4. alpha:0-1 透明度
  5. color:srt 颜色
  6. sharex 共享(x轴设为一样的)
    要创建的图形的尺寸(以英寸为单位)
    例:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值