" id="b1img" alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO">
  • " alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" />
  • " alt="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" title="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" />
  • " alt="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" title="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" />

别了网工,数据分析之路(三)——利用Python进行数据分析

资源分享2018-05-16 itlogger阅读(24) 评论(0)
一、数据分析的基本过程
  • 提出问题
  • 理解数据(采集数据、导入数据、查看数据集信息)
  • 数据清洗:数据预处理(选择子集、列名重命名、缺失数据处理、数据类型转换、数据排序、异常值处理)
  • 构建模型:业务指标、机器学习算法训练
  • 数据可视化:图表
二、Python数据分析基础知识
1.常用的两个包Numpy、Pandas(带有索引)
2.基本函数
data.shape: 返回data的维数;
data.dtype: 返回data的元素类型;
data.ndim:返回行数;
np.zeros():创建元素都为0的array,array的维数等于括号内赋给的维数;
np.ones():遇上一个类似,创建元素都为1的array,array的维数等于括号内赋给的维数shape;
np.empty():创建一个array,里面的所有元素都没有被初始化;
np.arange():类似于python中的range()函数,但是是以np.array形式返回的;
###########################################
import numpy as np
import pandas as pd
#(一)Numpy一维数组实列
a = np.array([2,3,4,5])
#1.查询元素
print (a[2])
#2.切片访问
print (a[1:3])
#3.循环取数
for i in a:
print (i)
#4.变量数据类型
print (‘4.dType:’,a.dtype)
#5求平均值
print (‘5.M:’,a.mean())
#6标准差
print(‘6.STD:’,a.std())
#############################################
#(二)pd一维数组实例
stocks=pd.Series([54.74,190.9,173.14,1050.3,181.86,1139.49],index=[‘Tx’,’ALI’,’Apple’,’GG’,’FB’,’AMZ’])
#7.按位置取数
print(‘7.stocks[0]:’,stocks.iloc[0])
#8.按索引取数
print(‘8.FB:’,stocks.loc[‘FB’])
#9.获取一维数组的描述统计信息
print(‘9.describe’,stocks.describe())
#10.向量相加,按索引值相加
s1 = pd.Series([1,2,3,4],index=[‘a’,’b’,’c’,’d’])
s2 = pd.Series([10,20,30,40],index=[‘a’,’b’,’e’,’f’])
s3 = s1+s2
print(’10.s3=’,s3)
#11.删除空值
print(’11.s3=’,s3.dropna())
#12.填充空值
s3 = s1.add(s2,fill_value=100)
print(’12.s3=’,s3)
##############################################
#(三)Numpy二维数组实例
b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
#13.元素查询
print(’13.b[0,2]=’,b[0,2])
#14.获取第1行
print(’14.b[1,:]=’,b[1,:])
#15.获取第2列
print(’15.b[2,:]’,b[2:])
#16.按行计算均值
print(’16.按行计算均值’,b.mean(axis=1))
#17.按列计算均值
print(’16.按列计算均值’,b.mean(axis=0))
##############################################
#四、pandas二维数组实例
#18.定义一个字典
salesDict = {‘date’:[‘2018/01/11′,’2018/01/02′,’2018/01/03′],’card’:[‘CARD01′,’CARD02′,’CARD03′],’PRICE’:[11,22,33]}
#导入有序字典
from collections import OrderedDict
salesOrderDict = OrderedDict(salesDict)
#19.定义数据框,传入字典参数
saleDf = pd.DataFrame(salesOrderDict)
print (saleDf)
print (saleDf.describe())
print (’19.Mean:’,saleDf.mean())
print(’20.saleDf.iloc[0,2]’,saleDf.iloc[0,2])
print(’21.第1行:’,saleDf.iloc[0,:])
print(’22.第1列:’,saleDf.iloc[:,0])
print(’23.第0行第2列’,saleDf.loc[0,’card’])
#24.获取第0行
print(’24.获取第0行’,saleDf.loc[0,:])
#获取第2列
print(’25.获取第2列’,saleDf.loc[:,’PRICE’])
print(’26.获取第2列’,saleDf[‘card’])
print(’27.获取几列’,saleDf.loc[:,’date’:’card’])
#构建查询条件
querySer = saleDf.loc[:,’PRICE’]>11
#28.应用查询条件
print (‘查询价格大于11:’,saleDf.loc[querySer,:])
三、利用Python进行数据分析【案例】
1.提出问题:一个excel包含关键词和词频两个字段,求TOP10关键词的频数之和与总频数之比
2.理解数据
fileNameStr = ‘I:\Keywords.xlsx’
xls = pd.ExcelFile(fileNameStr)
keywordDf = xls.parse(‘Sheet1’)
print(keywordDf.head(10))
print(keywordDf.describe())
print(’29.Dtype:’,keywordDf.loc[:,’keywords’].dtype)
print(’30.Dtypes’,keywordDf.dtypes)
print(’31.Shape:’,keywordDf.shape)
运行结果如下:
———————————————————–
29.Dtype: object
30.Dtypes keywords object
keynum int64
dtype: object
31.Shape: (1005, 2)
————————————————————–
3.数据清洗
#选择子集
#subKeyDf=keywordDf.loc[0:4,’keywords’:’keynum’]
#print (subKeyDf)
#重命名列名
colNameDict = {‘keynum’:’keyfreq’}
keywordDf.rename(columns = colNameDict,inplace=True)
print (’32.Rename column’,keywordDf.head(5))
print (’33.删除空值’,keywordDf.dropna(subset=[‘keyfreq’]))
keywordDf = keywordDf.drop_duplicates(subset=[‘keywords’,’keyfreq’])
#重新排序
keywordDf = keywordDf.sort_values(by=’keyfreq’,ascending=False)
topDf=keywordDf.head(10)
print (’34.重新排序’,topDf)
4.构建模型
sumFreq=keywordDf.loc[:,’keyfreq’].sum()
print (‘sumFreq=’,sumFreq)
topDict={}
for all in topDf:
topPerc=(topDf[‘keyfreq’]*100)/sumFreq
topDict[‘keyword’] = str(topDf[‘keywords’])
topDict[‘keyfreq’] = topDf[‘keyfreq’]
topDict[‘perc’] = topPerc
topOrderDict = OrderedDict(topDict)
# .定义数据框,传入字典参数
PercDf = pd.DataFrame(topOrderDict)
#Perc = pd.Series(topDf[‘keywords’],topDf[‘keyfreq’],topPerc)
#PercDf.plot(x=’keyword’, y=’perc’)
print (PercDf[‘keyword’])
#画柱形图
plt.bar(PercDf.index,PercDf[‘perc’],0.4,color=’yellow’,label=PercDf[‘keyword’])
plt.title(‘TOP Keywords’)
plt.grid(True)
plt.show()

转载请注明 :IT樵客
文章地址:http://www.itlogger.com/res/2459.html
标签:
相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注