
大数据测试,说来进入这块领域也快2年半了。每天工作的内容是验证数据表的逻辑正确性。
最近偶有所思,数据测试能否更进一步?如何利用已有技能对海量数据进行全面分析,找出数据质量问题或协助数据分析师发现逻辑漏洞?
再或者,能否向数据分析师转型呢?想得很多,思绪有些杂乱。于是我冷静了下,不再空想。我先做点东西出来看看,再评估下自己是否有这个能力和资质。
花了1个星期的时间,学习了 Python 的 Pandas 模块,按照学习示例一边学习一边实 *** ,慢慢地感觉就来了。对 Pandas 有了基本的认知后,我在寻找一个突破点,我想我不能一直只是这样按照示例代码敲下去,毫无意义。
我得将所学的 Pandas 知识结合公司现有的业务进行运用。刚开始至少能简单地开始对某张数据表的某个指标进行数据分析。于是我按照这样的想法对 test test_resv001_room_daily_df 表的 number_of_room_nights 指标开始了数据分析的 探索 。
1、hivesql数据准备
hivesql内容说明:
从上面的 hivesql 语句可以看出,这条 sql 的目的是查询出 hotel_code_new 为 'CNSZV002','CWH','CWSW','ESL','FIJ' 在2019年各个月份的 number_of_room_nights 指标总和,按照 hotel_code_new 和月份作分组和排序。
2、代码实现
3、hive数据库all_data的数据结构查询结果
4、代码实现2中的print(df)输出结果
手工校对通过,与 hivesql 输出结果一致。
5、将dataframe数据结构的df数据使用plot生成趋势图
调用dfplot()不带任何参数的趋势图如下:
上述折线图表示:当前月份值及 历史 月份值的累加和。
调用dfplot(kind='bar')时加上参数kind='bar'的趋势图如下:
上述柱状图表示:当前月份值及 历史 月份值的累加和。
两个图只是展示形式上的区别,都能在一定程度上体现2019年12个月份每个不同 hotel_code_new 当前月份与 历史 月份 number_of_room_nights 值的累加和的数据分布情况,可以说是一个简单的数据分析。
6、将dataframe数据写入csv文件
room_ntscsv内容如下:
7、读取csv文件中dataframe数据
8、将dataframe多维数据存储到excel中
room_ntsxlsx文件中sheet_name为room_nts的内容如下:
9、从excel中读取dataframe多维数据
小结
今天分享的数据分析内容比较基础,主要是将学到的技能与业务相结合的初步 探索 ,后续还需要不断 探索 与学习,将学习到的技能加以思考并运用到实际项目业务中,如此方能走得更远。
步骤 *** 作方法如下:
1、环境准备:
a、右击桌面上选择Open in Terminal 打开终端。
b、在d出的终端中输入ipython进入Python的解释器中,如图1所示。
2、导入所需要的包:
导入实验常用的python包。如图2所示。
import pandas as pdpandas用来做数据处理。
import numpy as npnumpy用来做高维度矩阵运算
import matplotlibpyplot as pltmatplotlib用来做数据可视化。
3、pandas数据写入到csv文件中:
names = [‘Bob’,’Jessica’,’Mary’,’John’,’Mel’]创建一个names列表
births = [968,155,77,578,973]创建一个births 列表
DataSet = list(zip(names,births))用 zip 函数将这两个列表合并在一起
DataSet查看生成的数据
df = pdDataFrame(data = DataSet ,columns=[‘Names’,’Births’])用生成的数据生成一个DataFrame对象
df查看生成的dataFrame
将创建的数据写入到/opt/births1880csv文件中,
dfto_csv(‘/opt/births1880csv’, index=False, header=False )将df写入到文件中
ls /opt/births1880csv查看文件是否存在
cat /opt/births1880csv查看文件内容
4、pandas读取csv中的数据
读取步骤3生成的数据,如图5所示。
local_data = r’/opt/births1880csv’将文件路径赋到变量local_data中
df2 = pdread_csv(local_data,header=None)读取内容赋值到df2
df2查看df2的值
df3 = pdread_csv(local_data,header=None,names=[‘names’,’births’])指定列名字赋值到df3
df3查看df3的值
Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐 *** 作,DataFrame是一张多维的表,大家可以把它想象成一张Excel表单或者Sql表。之前这篇文章已经介绍了从各种数据源将原始数据载入到dataframe中,这篇文件介绍怎么将处理好的dataframe中的数据写入到文件和数据库中。
参考资料
博客园博客园[引用时间2018-1-2]
#python中的pandas库主要有DataFrame和Series类(面向对象的的语言更愿意叫类) DataFrame也就是
#数据框(主要是借鉴R里面的dataframe),Series也就是序列 ,pandas底层是c写的 性能很棒,有大神
#做过测试 处理亿级别的数据没问题,起性能可以跟同等配置的sas媲美
#DataFrame索引 dfloc是标签选取 *** 作,dfiloc是位置切片 *** 作
print(df[['row_names','Rape']])
df['行标签']
dfloc[行标签,列标签]
print(dfloc[0:2,['Rape','Murder']])
dfiloc[行位置,列位置]
dfiloc[1,1]#选取第二行,第二列的值,返回的为单个值
dfiloc[0,2],:]#选取第一行及第三行的数据
dfiloc[0:2,:]#选取第一行到第三行(不包含)的数据
dfiloc[:,1]#选取所有记录的第一列的值,返回的为一个Series
dfiloc[1,:]#选取第一行数据,返回的为一个Series
print(dfix[1,1]) # 更广义的切片方式是使用ix,它自动根据你给到的索引类型判断是使用位置还是标签进行切片
print(dfix[0:2])
#DataFrame根据条件选取子集 类似于sas里面if、where ,R里面的subset之类的函数
df[dfMurder>13]
df[(dfMurder>10)&(dfRape>30)]
df[dfsex==u'男']
#重命名 相当于sas里面的rename R软件中reshape包的中的rename
dfrename(columns={'A':'A_rename'})
dfrename(index={1:'other'})
#删除列 相当于sas中的drop R软件中的test['col']<-null
dfdrop(['a','b'],axis=1) or del df[['a','b']]
#排序 相当于sas里面的sort R软件里面的df[order(x),]
dfsort(columns='C') #行排序 y轴上
dfsort(axis=1) #各个列之间位置排序 x轴上
#数据描述 相当于sas中proc menas R软件里面的summary
dfdescribe()
#生成新的一列 跟R里面有点类似
df['new_columns']=df['columns']
dfinsert(1,'new_columns',df['B']) #效率最高
dfjoin(Series(df['columns'],name='new_columns'))
#列上面的追加 相当于sas中的append R里面cbind()
dfappend(df1,ignore_index=True)
pdconcat([df,df1],ignore_index=True)
#最经典的join 跟sas和R里面的merge类似 跟sql里面的各种join对照
merge()
#删除重行 跟sas里面nodukey R里面的which(!duplicated(df[])类似
dfdrop_duplicated()
#获取最大值 最小值的位置 有点类似矩阵里面的方法
dfidxmin(axis=0 ) dfidxmax(axis=1) 0和1有什么不同 自己摸索去
#读取外部数据跟sas的proc import R里面的readcsv等类似
read_excel() read_csv() read_hdf5() 等
与之相反的是dfto_excel() dfto_ecv()
#缺失值处理 个人觉得pandas中缺失值处理比sas和R方便多了
dffillna(9999) #用9999填充
#链接数据库 不多说 pandas里面主要用 MySQLdb
import MySQLdb
conn=MySQLdbconnect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很经典
#写数据进数据库
dfto_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas里面的中的by R软件中dplyr包中的group_by sql里面的group by功能是一样的 这里不多说
#求哑变量
dumiper=pdget_dummies(df['key'])
df['key']join(dumpier)
#透视表 和交叉表 跟sas里面的proc freq步类似 R里面的aggrate和cast函数类似
pdpivot_table()
pdcrosstab()
#聚合函数经常跟group by一起组合用
dfgroupby('sex')agg({'height':['mean','sum'],'weight':['count','min']})
#数据查询过滤
testquery("02
将STK_ID中的值过滤出来
stk_list = ['600809','600141','600329']中的全部记录过滤出来,命令是:rpt[rpt['STK_ID']isin(stk_list)]
将dataframe中,某列进行清洗的命令
删除换行符:misc['product_desc'] = misc['product_desc']strreplace('\n', '')
删除字符串前后空格:df["Make"] = df["Make"]map(strstrip)
如果用模糊匹配的话,命令是:
rpt[rpt['STK_ID']strcontains(r'^600[0-9]{3}$')]
对dataframe中元素,进行类型转换
df['2nd'] = df['2nd']strreplace(',','')astype(int) df['CTR'] = df['CTR']strreplace('%','')astype(npfloat64)
#时间变换 主要依赖于datemie 和time两个包
>
1、Numpy
Numpy是Python科学计算的基础包,它提供了很多功能:快速高效的多维数组对象ndarray、用于对数组执行元素级计算以及直接对数组执行数学运算的函数、用于读写硬盘上基于数组的数据集的工具、线性代数运算、傅里叶变换以及随机数生成等。NumPy在数据分析方面还有另外一个主要作用,即作为在算法和库之间传递数据的容器。
2、Pandas
Pandas提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来,它助使Python成为强大而高效的数据分析环境。其中用得最多的Pandas对象是DataFrame,它是一个面向列的二维表结构,另一个是Series,一个一维的标签化数组对象。Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理功能。还提供了复杂精细的索引功能,能更加便捷地完成重塑、切片和切块、聚合以及选取数据子集等 *** 作。
3、matplotlib
matplotlib是最流行的用于绘制图表和其他二维数据可视化的Python库。它最初由John
DHunter(JDH)创建,目前由一个庞大的开发团队维护。它非常适合创建出版物上用的图表。虽然还有其他的Python可视化库,但matplotlib应用最为广泛。
4、SciPy
SciPy是一组专门解决科学计算中各种标准问题域的包的集合,它与Numpy结合使用,便形成了一个相当完备和成熟的计算平台,可以处理多种传统的科学计算问题。
5、scikit-learn
2010年诞生以来,scikit-learn成为了Python通用机器学习工具包。它的子模块包括:分类、回归、聚类、降维、选型、预处理等。与pandas、statsmodels和IPython一起,scikit-learn对于Python成为高效数据科学编程语言起到了关键作用。
6、statsmodels
statsmodels是一个统计分析包,起源于斯坦福大学统计学教授,他设计了多种流行于R语言的回归分析模型。Skipper Seabold和Josef
Perktold在2010年正式创建了statsmodels项目,随后汇聚了大量的使用者和贡献者。与scikit-learn比较,statsmodels包含经典统计学和经济计量学的算法。
一、问题原因
mysql数据库的存储过程创建语句之中需要使用begin表示存储过程要执行的语句从这里开始,在结尾使用end表示存储过程的语句要结束了。而在mysql数据库之中无论是查询还是添加语句都要使用分号去分隔,但是在存储过程之中创建sql语句的时候却被mysql数据库的编译器把分号当做了结束语句,没有end就被检测成语法错误了。
二、解决方法
一般来说上面这个问题都是因为mysql数据库版本所导致的,如果确定语句没有错误的话就要更新版本或者将语句的结束符改成别的符号,只要能够让mysql数据库编译器解析到end就可以了。使用delimiter即可更改sql语句结束符,示例如下:
delimiter // --更改结束符create procedure course_id_name(in cid varchar(20))beginselect namefrom coursewhere id = cid;end//delimiter ; --将结束符换回分号
以上就是关于“mysql数据库存储过程语法报错为什么?原因和解决方法看这里”的全部内容了,想要了解更多python的实用知识和代码示例可以持续关注这个频道,每次更新都会有很多新的知识技术分享给大家。
以上就是关于Python + Pandas + Matplotlib初探数据分析全部的内容,包括:Python + Pandas + Matplotlib初探数据分析、如何将pandas.dataframe的数据写入到文件中、怎么使用Python中Pandas库Resample,实现重采样,完成线性插值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)