
数据分析
Roc Huang
代码连接世界,Python创造未来!
展开
-
MYSQL数据库的备份操作mysqldump
备份数据库mysqldump -uroot -p database_name > d:\aa.sql备份数据库中的表mysqldump -uroot -p database table1 table2 > d:\aa.sql多个表用空格隔开只备份数据 不要表结构mysqldump -t -uroot -p database table1> d:\aa.sql只要表结构 不要数据mysqldump -d-uroot -p database table1>原创 2020-10-21 00:31:27 · 116 阅读 · 0 评论 -
Python基础之socket通讯、TCP及UDP
TCP/IP计算机为了联网,就必须规定通讯协议,早期的计算机网络是由各个厂商规定的一些协议,他们之间互不兼容。为了把全世界的电脑能够连接到一起,那么就必须规定一套全球通用的协议,为了完成这个目标,互联网协议簇就是通讯协议标准,有了internet,任何私有网络,只要支持这个协议就可以联入互联网因为互联网协议包含了上百种协议标准,但是最重要的两个协议就是TCP和IP协议,所以大家把互联网协议简称TCP/IP协议。通讯的时候,双方必须都知道对方的标识,并且这些标识必须都是唯一的,互联网上的每个计算原创 2020-10-17 22:33:32 · 321 阅读 · 0 评论 -
Python基础之排列组合及正则表达式
排列概念:从n个元素中取出m(m<=n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement),特别地,当m=n时,这个排列被称为全排列(Permutation)'''需求:1 2 3 4假设从中取3个数字,然后对这三个数字进行排列'''#需求:从[1,2,3,4]4个数中随机取出3个数进行排列import itertoolsmyList = list(iterator.permutations([1,2,3,4], 3))print(m原创 2020-10-16 22:56:06 · 334 阅读 · 0 评论 -
Python基础之高阶函数
高阶函数MapReduceMapReduce主要应用于分布式中。Python的优点:内置了map()和reduce()函数,可以直接使用。# python内置了map()和reduce()函数'''def myMap(func,li): resList = [] for paser in li: res = func(paser) resList.append(res)''' map()函数功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为新的原创 2020-10-14 21:01:10 · 263 阅读 · 0 评论 -
Python基础之文件读写
读写文件读文件要以读文件的模式打开一个文件对象,使用python内置的open()函数,传入文件名和标识符:>>> f = open('/user/demo/test.txt','r')标识符’r’表示读,这样,我们就成功地打开了一个文件如果文件不存在,open()函数就会抛出一个IOError的错误,并且会给出详细的错误码和信息,告诉你文件不存在.>>> f=open('/Users/michael/notfound.txt', 'r')Trac原创 2020-10-13 22:39:17 · 266 阅读 · 0 评论 -
Python基础之继承和多态
继承单继承简单来说,一个子类只能有一个父类,被称为单继承注意:在使用继承时,尽量一个类存在于一个模块中比如,我们定义了一个Animal的class,有一个run()方法class Animal(object): def run(self): print("Animal is running....")当我们需要编写Dog和Cat类时,就可以直接从Animal类继承:class Dog(Animal): passclass Cat(Animal):原创 2020-10-12 21:58:44 · 305 阅读 · 0 评论 -
Python基础之类的基本方法
构造函数和析构函数构造方法的使用 使用上面的方式可以创建对象,但是,很多类都倾向于将对象创建为有初始化状态.因此类可能定义一个名为__init__()的特殊方法(构造方法) 构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法.演示1:构造方法被调动的动机class Person(): name = "" age = 0 #构造方法 def __init__(self): print("构造函数被执行了")原创 2020-10-11 21:47:39 · 285 阅读 · 0 评论 -
Python基础之类和对象
类和对象类和对象的概念类:一个具有特殊功能的实体的集合[群体]对象:在一个类中,一个具有特殊功能的实体,能够帮忙解决特定的问题,对象通常也被称为实例.两者之间的关系:类用于描述某一对象的共同特征,而对象则是类的具体存在举例:学生 张三快递 顺丰总结: 类与对象的关系a.类是对象的抽象,对象是类的具体体现b.类也是一种数据类型,只不过是自己定义的类似与number,string等,它本身并不占用空间,但是它的实例[对象]是占用空间的.类的定义格式:class原创 2020-10-10 21:44:31 · 234 阅读 · 2 评论 -
Python基础之栈与队列及递归目录
栈与队列1 栈 stack特点:先进后出 后来者居上mystack = []#压栈[向栈中存数据]mystack.append(1)print(mystack)mystack.append(2)print(mystack)mystack.append(3)print(mystack)#出栈[从栈中取数据]mystack.pop()print(mystack)mystack.pop()print(mystack)2 队列 queue特点: 先进先出#导入数据结原创 2020-10-09 23:18:23 · 1006 阅读 · 1 评论 -
Python基础之OS模块及获取windows桌面路径
os模块在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告等等,经常会对大量文件和路径进行操作,这就依赖os模块1. os.getcwd()功能:查看当前所在路径import osprint(os.getcwd())2. os.listdir()列举目录下所有的文件,返回的是列表类型import osprint(os.listdir("c:\file"))3. os.path.abspath(path)功能:返回path的绝原创 2020-10-08 22:57:55 · 1806 阅读 · 0 评论 -
Python基础之回调、闭包、递归函数
一 回调函数简单来说:回调函数就是把函数当成一个参数传递到函数中.def wake_call(time): #第一种叫醒服务 print(time,"使用夺命电话连环call叫醒主人")def wake_water(time): #第二种叫醒服务 print(time,"使用早起泼冷水的方式叫醒主人")def call_wake(time, func_name): # 这个很重要,这个就是酒店服务业务的系统业务 #这是实现回调函数的核心 # time :预约时间 # fu原创 2020-10-07 22:07:17 · 189 阅读 · 0 评论 -
Python基础之变量的作用域
变量的作用域1.1 概述在python程序中,创建,改变,查找变量名的时候,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.简单来说,变量的作用域就是指变量可以使用的范围程序的变量并不是在任意的位置都可以访问,访问权限取决于这个变量是在哪里赋值的.1.2 作用域的划分L(local) 局部作用域局部变量:包含在def关键字定义的语句块中,即在函数中定义变量,每当函数被调用的时候都会创建一个新的局部作用域.注意:如果需要在函数内部对全局变量赋值,需要在函数内部通过原创 2020-10-06 22:45:57 · 298 阅读 · 0 评论 -
Python基础之特殊的函数--装饰器和偏函数
一、装饰器1.1 概述在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)装饰器实际上就是一个闭包,把一个函数当做函数参数传入,然后返回一个替代版函数,本质上就是一个返回函数的高阶函数1.2 简单的装饰器函数也可以是一个对象,而且函数对象可以被赋值给变量,所以通过变量也可以调用该函数def now(): ptint("2018-3-18")f = nowf()函数对象有一个____name____属性,可以拿到函数的名字:def now():原创 2020-10-05 21:57:11 · 1747 阅读 · 0 评论 -
Python基础之函数
函数1.函数的概述1.1 认识函数函数:在一个完整的项目中,某些功能会反复的使用,那么会将功能会反复的使用,那么会将功能封装成函数,当我们要使用此功能的时候调用即可。优点:1.简化代码结构,增加了代码的复用性(重复使用的程度)2.增加代码的可维护性,如果想修改某个BUG,只需要对应的函数即可。1.2 定义函数格式:def 函数名(参数列表):语句 return 表达式解释:def : 函数代码块以def关键字开始函数名:遵循标识符规则参数列表:任何传入函数的参数原创 2020-10-04 21:54:41 · 1082 阅读 · 2 评论 -
Python 基础之列表生成式、可迭代对象、迭代器
1. 列表生成式语法:list = [result for x in range(m, n)]需求:创建一个[1, 2, …100]的列表>>> range(1, 101)[1, 2, 3, 4, 5,...,100]需求2 :生成一个[1x1, 2x2, 3x3,….100x100]的列表>>> list1 = []>>> for x in range(1, 101) list1.append(x*x)>&原创 2020-10-03 22:22:48 · 294 阅读 · 0 评论 -
Python基础之集合和数据类型转换
Set集合1.概述set与dict类似,也是一组key的集合,但与dict的区别在于set不存储value本质:无序且无重复元素的集合2.set的创建语法:set1 = set([1, 2, 3, 4, 5])注意:创建set需要一个list或者tuple或者dict作为输入集合,重复的元素在set中会被自动的过滤s1 = set([1, 2, 3, 4, 5])print(s1)3.set操作3.1 set.add()注意:1.可以添加重复的元素,但是不会有效果2原创 2020-10-02 21:54:05 · 1000 阅读 · 0 评论 -
Python基础之字典介绍
Dict字典1.概述dict也是一种存储方式,类似于list和tuple,但是,字典采用键—值(key—value)的形式存储优点:具有极快的查找速度2.key的特性1.字典中的key必须唯一2.key必须是不可变对象例如:字符串、整数等都是不可变的,可以作为keylist是可变的,不能作为key思考:保存一个班级中的童鞋的成绩思路1:使用list或者tuple,但是容易发生错乱对不上号思路2:使用二维list或者tuple,但是会比较慢思路3:可以采用字典,将学生的学号或原创 2020-10-01 22:59:11 · 147 阅读 · 0 评论 -
Python基础之字符串介绍
String字符串1.分割和合并1.1 str1.split(str2, num)功能:以str2为分割截取字符串,num默认为str1.count()若给定num 后,则截取num个字符串,剩余的不再进行截取。str1 = "how are you , i am fine thank you"#使用空格进行分割list1 = str1.split(" ")print(list1)#结果['how', 'are', 'you', ',', 'i', 'am', 'fine', 'th原创 2020-09-30 23:02:30 · 379 阅读 · 0 评论 -
Pymysql的一些基础操作
1.安装PyMySQLpip3 install PyMySQL2.数据库连接创建表CREATE TABLE student ( id int(10) NOT NULL AUTO_INCREMENT, name char(20) NOT NULL, age int(11) DEFAULT NULL, sex char(1) DEFAULT NULL, score float DEFAULT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFA原创 2020-09-29 23:03:12 · 144 阅读 · 0 评论 -
Linux基础----之基础命令
1. Linux 目录/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。/bin、/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。/dev:存放linux系统下的设备文件,访问该目原创 2020-09-28 22:07:20 · 176 阅读 · 0 评论 -
Redis数据库常用命令
1、新增键值a、设置键值set key valueset name 'ming'b、设置键值及过期时间,以秒为单位setex key seconds valuettl key 查看剩余消失的时间setex name 10 'xiaoming' c、设置多个键值mset key value [key value ……]mset name "lili" age 18 sex 'girl'2、获取a、根据键获取值,如果键不存在则返回None(null 0 nil)原创 2020-09-27 22:42:56 · 146 阅读 · 0 评论 -
MySQL数据库的增删改查
1.Mysql操作2.1 创建表语法:CREATE TABLE table_name (column_name column_type);例如:create table student( id int not null auto_increment primary key, sex bit, age int, name char(20), info varchar(100), birthday date);注意:字段使用NOT NULL属原创 2020-09-25 23:42:56 · 115 阅读 · 0 评论 -
Python中的并发---多线程和协程
多线程在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程!因为全局解释器锁(GIL)为什么要GIL为了线程间数据的一致性和状态同步的完整性GIL的影响只有一个线程在运行,无法使用多核。在多线程环境中,Python虚拟机按照以下方式执行。 1.设置GIL。 2.切换到一个线程去执行。 3.运行。 4.把线程设置为睡眠状态。 5.解锁GIL。 6.再次重复以上步骤。# 使用线程from threading import Threaddef l原创 2020-09-22 22:15:03 · 423 阅读 · 0 评论 -
PySpark入门二十三:ML--随机森林
随机森林相关概念介绍随机森林随机森林是由许多决策树构成,是一种有监督学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。“随机”是针对森林中的每一颗决策树,有两种含义:1. 数据采样随机构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合;2. 特征随机训原创 2020-09-17 22:22:45 · 1731 阅读 · 1 评论 -
PySpark入门二十二:ML--线性回归
ML–线性回归线性回归的总体目标是预测直线通过数据, 使每个点的垂直距离是最小的到该预测线。squared errors - 均方误差是反映估计量与被估计量之间差异程度的一种度量协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就原创 2020-09-16 23:16:31 · 1140 阅读 · 0 评论 -
PySpark入门二十一:ML机器学习之参数调优
网格搜索法这篇文章主要是接着上一篇文章来继续学习,如果感兴趣,请点击查看网格搜索法,是根据给定的评估指标,循环遍历定义的参数值列表,估计各个单独的模型,从而选择一个最优的模型。调整参数需要用到tuning这个包# 导包import pyspark.ml.tuning as tune# 指定模型和参数列表logistic = cl.LogisticRegression(labelCol='INFANT_ALIVE_AT_REPORT')grid = tune.ParamGridBuilde原创 2020-09-15 23:00:10 · 1349 阅读 · 0 评论 -
PySpark入门二十:ML预测婴儿生存几率--逻辑回归实践
ML建模之逻辑回归实操数据集可以点击此下载加载数据# 导包from pyspark.sql.session import SparkSessionfrom pyspark import SparkContextimport pyspark.sql.types as typ# 穿键spark通信sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 这里采用了指定数据类型的方式创建DFlabels = [ ('INFA原创 2020-09-14 23:15:43 · 1261 阅读 · 4 评论 -
PySpark入门十九:ML评估器之回归与聚类
回归ML中可用于回归的有七种模型:AFTSurvivalRegression:适合加速失效时间回归模型。是一个参数化模型,假设其中一个特征的边际效应加速或减缓了预期寿命。适用于具有明确阶段的过程。DecisionTreeRegressor:类似于分类模型,明显不同的是其标签是连续的而不是多项的。GBTRegressor: 与 DecisionTreeRegressor 一样,区别在于标签的数据类型。GeneralizedLinearRegression: 广义线性回归是具有不同内核功能的线性模型原创 2020-09-13 17:56:51 · 513 阅读 · 0 评论 -
PySpark入门十八:ML之评估器
评估器评估器被视为需要评估的统计模型,对数据做预测或分类。包含了七种分类。评估器分类LogisticRegresssion: 逻辑斯蒂回归,实际作用于二分类场景;DecisionTreeClassifier: 决策树,适用于分类场景。maxDepth:限制树的深度,minInstancePerNode:树节点观察数据的最小数量,maxBins:参数指定连续变量将被分割的Bin的最大数量,impurity:测量并计算来自分割信息的度量;GBTClassifier: 用于分类的梯度提升决策树模型,集原创 2020-09-12 09:50:47 · 386 阅读 · 0 评论 -
PySpark入门十七:ML之转换器
ML介绍ML主要包含了三个类:转换器、评估器和管道。 那么今天着重学习的是转换器转换器转换器:顾名思义,通常通过将一个新列附加到DataFrame来转换数据。转换器类型在spark.ml.feature中提供许多转化器,下面会介绍常用的几个:Binarizer: 根据指定阈值将连续变量转化为对应的二进制;Bucketizer: 根据阈值范围将连续变量转化为多项值,即将连续变量离散化到指定的范围区间;ChiSqSelector: 卡方检验选择器(这个不知道大家怎么讲,我自己这样叫的)。顾名原创 2020-09-11 23:49:38 · 435 阅读 · 0 评论 -
PySpark入门十六:机器学习库ML和MLlib
ML和MLlib的联系和区别两个库都适用于机器学习,且可以满足大多数场景需求;Spark 在3.0版本后将会弃用MLlib 所以现在学习的同学们,可以直接学习ML就好了,不用学习MLlib了;ML主要操作的是DataFrame,而MLlib是处理的RDD对象,相比较而言,处理DataFrame会比处理RDD更加简洁和灵活。ML对DataFrame的抽象级别更高,数据和操作的耦合度很低;ML的操作可以使用pipeline,就像sklearn一样,把特征提取、算法等操作可以串起来,会非常的方便和流畅;原创 2020-09-10 22:52:15 · 922 阅读 · 0 评论 -
PySpark 入门十五:RDD的map和flatMap
RDD的map和flatMap最近约看约有些困惑这两个方法了,于是仔细查了一下,总结了以下的区别和联系区别map() 接收一个函数,把这个函数用于 RDD 中的每个元素,将函数的返回结果作为RDD 中对应元素的结果;flatMap()对RDD每个输入元素生成多个输出元素,我们提供给 flatMap() 的函数被分别应用到了输入 RDD 的每个元素上。这样看起来还是比较复杂,接下来举个非常简单的例子就非常明确了from pyspark import SparkContextfrom pys原创 2020-09-09 23:16:46 · 2077 阅读 · 0 评论 -
PySpark入门十四:数据可视化--直方图histogram
——直方图histogramhistogram(buckets)输入参数buckets可以是一个数字,也可以是一个列表输出结果为一个元组,元组包含两个列表分别是桶和直方图例如:对一个0到50的序列组成的列表,buckets是数字时# 生成rddrdd =sc.parallelize(range(51)).histogram(4)# 利用matplotlib 生成图表data = { 'bins': rdd[0][:-1], 'freq': rdd[1]}# {'bi原创 2020-09-08 23:34:00 · 3689 阅读 · 0 评论 -
PySpark入门十三:数据清洗之描述性统计
描述性统计描述性统计是熟悉数据的最直接的方法之一,可以让我们很轻松就知道数据中有多少个缺失的观测数据、平均值、标准差、最大最下值# 导包和创建连接的代码我就不写了# 加载数据类型模块import pyspark.sql.types as typ# 加载数据fraud = sc.textFile('./ccFraud.csv')header = fraud.first()# 删除标题行 并将每个元素转化为整形fraud = fraud.filter(lambda row: row !=原创 2020-09-07 23:33:33 · 1460 阅读 · 0 评论 -
PySpark入门十二:数据清洗之离群值
离群值的查找及处理构造数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 生成数据df_outliers = spark.createDataFrame([ (1, 144.5, 5.9, 33,), (2, 167.2, 5.4, 45,原创 2020-09-06 17:10:22 · 900 阅读 · 0 评论 -
PySpark入门十一:数据清洗之缺失值处理
缺失值处理在数据清洗中,查看缺失值、处理缺失值是非常重要的一个环节,通常对缺失值的处理是两种策略:删除和填充。接下来一起学习一下在PySpark中如何通过代码实现这两种操作。首先构建数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 创建连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 构造数据df =原创 2020-09-05 23:19:42 · 4885 阅读 · 0 评论 -
PySpark入门十:数据清洗之去重
去重首先构建学习数据# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 创建连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 生成数据df = spark.createDataFrame([ (1, 144.5, 5.9, 33, 'M'), (2, 167.2, 5.4, 45, 'M'),原创 2020-09-04 23:22:00 · 3050 阅读 · 0 评论 -
PySpark入门九:飞行数据案例
飞行数据案例此案例主要是为了熟悉dataframe的基础操作以及SQL语句的再熟悉,此案例的所有数据都可以从这里获得。话不多说,直接上代码# 导包from pyspark import SparkContextfrom pyspark.sql.session import SparkSession# 构造spark连接sc = SparkContext.getOrCreate()spark = SparkSession(sc)# 加载数据--从文件flightPath = './l原创 2020-09-03 23:07:51 · 763 阅读 · 0 评论 -
PySpark入门八:DataFrame 删及SQL操作
一、删1.1 删除列df.drop('age').collect()df.drop(df.age).collect()1.2 删除空值df = df.na.drop() # 删除任何列包含na的行df = df.dropna(subset=['col1', 'col2']) # 删掉col1或col2中任一一列包含na的行1.3 填充NAdf.fillna(-1)1.4 去重# 返回不包含重复行的dataframedf.distinct()# 指定字段去重df.sele原创 2020-09-02 22:55:01 · 1117 阅读 · 0 评论 -
PySpark入门七:DataFrame的合并、分割
合并 join/union1.1 join# 1. 拼接两个dfdf3 = df1.union(df2)df.unionALL(df.limit(1))# 2. 根据条件拼接# 单字段df = df_left.join(df_right, df_left.key == df_right.key, "inner")# 多字段df1.join(df2, Seq("id", "name"))# 混合字段df1.join(df2, df1("id" ) === df2( "t1_id"))原创 2020-09-01 23:33:50 · 5665 阅读 · 0 评论