用python进行数据分析(一:数据理解)
python作为当前主流的语言之一,他的功能是非常强大的。不论是在游戏行业还是数据分析行业还是软件开发啥的好像都可以用python,但作为一个数据分析师,并不需要用到他的全部功能。
只是想要达到“能够用python完成数据分析工作”的效果,所以整理了这个随笔。
一、数据导入
数据的导入是进行数据分析的第一步骤,一般提取的数据由文本格式(txt)、表格格式(csv/excel)及数据库文件(dmp/直连)。
(1)导入csv
因为我个人习惯了r的相关数据结构和操作,所以我用pandas导入csv数据,可以直接导入DataFrame类型的数据。这种方法更接近R的操作方法,导入的数据类型也更便于操作。
# -*- coding: utf-8 -*-
import pandas as pd data=pd.read_csv(open('d:/data/datafile.csv')) print(data.head(10))
很简单,第一行读库,第二行导入,第三行查看样例数据。
(2)导入txt
这个我不常用。在网上找了一下:
1 data2 = open('E:\data\datafile.txt') 2 s=data2.read()
(3)连接数据库
大数据嘛,当然是连接数据库咯
#-*- coding:utf-8 -*- import numpy as np import pandas as pd import matplotlib.pylab as plt import mysql.connector conn = mysql.connector.connect(host='localhost', user='root', passwd='123456', db='python')#链接本地数据库 sql = 'select * from taob'#sql语句 data = pd.read_sql(sql,conn)#获取数据 print(data.describe())
(4)读取excel
备注:excel可以读中文,csv默认不行,要指定编码
# -*- coding: utf-8 -*-
import pandas as pd
from datetime import date,datetime
def read_dataFrame(fileName,sheetName ='' ):
print('File:',end='')
print(fileName)
print('Sheet:',end='')
print(sheetName)
df = pd.read_excel(io=fileName, sheet_name=sheetName, header=0, skiprows=None,
skip_footer=0, index_col=None, names=None,
usecols=None, parse_dates=False, date_parser=None,
na_values=None, thousands=None, convert_float=True,
converters=None, dtype=None, true_values=None,
false_values=None, engine=None, squeeze=False)
df = append_dataFrame(df)
path = 'C://input//'
fileName = path+'input.xlsx'
data = read_dataFrame(fileName,'sheet1')
---------------------
原文:https://blog.csdn.net/flora_zhl/article/details/80269604
二、数据理解
为得到更准确的结果,必须理解数据的特征、分布情况,以及需要解决的问题,以便建立和优化算法模型。导入数据后,除了查看样例数据,还要对数据分布和特征进行基本的理解。
基本的数据理解,包括数据样例、数据行数和列数、字段类型、描述统计、分类指标分布概况、相关矩阵、高斯分布检验之类的。
1 print(data.head(10))#显示data的前十行 2 print(data.shape)#显示data的行数和列数 3 print(data.dtypes)#显示data的各字段的数据类型 4 print(data.describe())#进行data的各字段的描述性统计 5 print(data.groupby('colname1').size())#统计data的1字段每一类指标有多少记录 6 print(data.corr(method='pearson'))#计算data的各字段相关性矩阵 7 print(data.skew())#data的高斯分布检验,其大小表示左偏和右偏,接近0为偏差小
看起来是一行一个操作,真的是很简洁。
在这个过程,要注意发现和思考问题,特别是灵光一闪的解决方案要记下来,对后续的问题有较大的参考价值。
三、可视化
为了生成最优化的算法模型,必须对数据进行理解。最快、最有效的方法就是通过图形来加强对数据的理解。
单一图表可以直观地展示数据的分布,一般使用直方图、密度图和箱线图进行展示。这三种图实际上是展示了相似的内容,直方图可以看数据分布的分段分布图,密度图可以看数据分布的抽象分布图,箱线图可以看数据分布的统计情况。
对我而言,这三个图基本能解决所有的问题。当然python也肯定有些花里胡哨的图形功能,需要的时候再查一下。
(1)直方图
直方图又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据的分布情况。一般用横轴表示数据类型,纵轴表示分布情况。可以用来只管展示每个变量的分布状况,通过图表可以直观地看到数据是高斯分布、指数分布还是偏态分布。
1 import matplotlib.pyplot as plt 2 data.hist()#直方图 3 plt.show()#绘图
(2)密度图
密度图是一种表现与数据值对应的边界或域对象的图形表示方法,一般用于展现连续变量的分布情况。密度图像类似直方图的抽象表示,用的是平滑的线来描述数据的方法。这也是一种用来展示数据分布的图表。
1 import matplotlib.pyplot as plt 2 data.plot(kind='density',subplots=True,layout=(3,3),sharex=False)#3x3的密度图 3 plt.show()#绘图
(3)箱线图
箱线图是一种用于显示一组数据分散情况的统计图,用于显示数据分布状态。几条横线分别是上边缘、上四分位数、中位数、下四分位数、下边缘,横线为数据的伸展情况,游离边缘线之外的点为异常值。
1 import matplotlib.pyplot as plt 2 data.plot(kind='box',subplots=True,layout=(3,3),sharex=False)#3x3的箱线图 3 plt.show()#绘图
(4)散点矩阵图
花里胡哨的,但是对线性回归好用。
该图表示因变量随自变量变化的大致趋势,据此可以选择合适的函数进行拟合。同时考察多个变量的相关关系,对于进行多元线性回归尤为重要。
1 from pandas.plotting import scatter_matrix 2 scatter_matrix(data) 3 plt.show()