php随机字符怎么用,你手机有哪些不为人知的app?
iPhone13拿到手第一时间做什么呢?!
必备是安装一些必备软件啦!
这6款不为人知的手机APP,解锁你手机使用新姿势!每一个都是十分良心!
1、我的桌面(iOS)iPhone13新手机到手必装一个,桌面美化+自动换壁纸,让你手机时刻新鲜在线。首先是各种好看的中桌面主题和小组件,绝对让手机颜值在线。
拥有好看的壁纸库,你要的iPhone13手机壁纸也能在这里找到,另外还可以自己动手做刘海屏。设置成自动换壁纸更是绝了,设定壁纸更换时间,每天收到新壁纸+好心情。
2、充电酷(iOS)酷爆了的充电动画效果,让新手机潮上+潮!成为最亮的崽!
3、我的倒计时(iOS/Android)一个时间管理软件,记录一些重要事项,比如iPhone13到手后需要记住女朋友生日倒计时,然后只能是送上祝福和礼物哦~ 可以设置成锁屏壁纸,超实用!
ps:倒计时锁屏壁纸,跟随app设定壁纸改变
4、欧路词典(iOS/Android)这是一款反应快,可以多个权威词典同时查询的宝藏APP,能够任意下载你喜欢的词典,包括牛津、朗文等时下中国学生最爱,资源之丰富,只有用了才知道。
5、番茄todo(iOS/Android)一个相当于多了个监督学习的帮手,尤其适合假期学习使用,事先给自己设定任务和完成时间,专注期间可以开启学霸模式定时锁机,甚至能够加入自习室和朋友们比拼专注,到晚上看到当天学习数据时会有满满的成就感。
6、桌面时钟(iOS/Android)这是一款极简风格的桌面时钟,iPhone13一来,装上后就会爱上,时钟主题绝对好看,做成桌面小组件也十分出色。
以上app真心推荐
喜欢更多app的可以继续关注小咖的其他文章哦
怎么找加密函数?
寻找加密与解密函数,如‘123’经过加密函数function Encrit(s:string)加密后,变成‘9087’,而‘9087’经过解密后变成‘123。//加密函数function Tfuncs.Encrypt(Src:String; Key:String):String;stdcall;var KeyLen,KeyPos,Offset,SrcPos,SrcAsc:Integer; Dest :ShortString;begin KeyLen:=Length(Key); if KeyLen = 0 then Key:='I Love JFM'; KeyPos:=0; Randomize; Offset:=Random(256); Dest:=Format('%1.2x',[Offset]); for SrcPos := 1 to Length(Src) do begin SrcAsc:=(Ord(Src[SrcPos]) + Offset) MOD 255; if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1; SrcAsc:= SrcAsc xor Ord(Key[KeyPos]); Dest:=Dest + Format('%1.2x',[SrcAsc]); Offset:=SrcAsc; end; Result:=Dest;end;我有一个,但不在手头,先说说原理,不难1、生成一随机数aa2、与密码第一字符按位异或,得bb3、以bb为源与下一字符生成cc4、bb = cc,重复3、4直到结束然后将生成的密码再按某种方式打乱即可解密:反其道而行之!构造函数构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
基本信息
中文名构造函数外文名constructor特点命名须和类名完全相同等
中国科协权威合作机构
中国科协主办科普信息化平台
目录
主要特点
1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;
5.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
6.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
7.在Python中构造函数必须通过重写__init__方法实现
应用
C++构造函数
C++语言为类提供的构造函数可自动完成对象的初始化任务,全局对象和静态对象的构造函数在main()函数执行之前就被调用,局部静态对象的构造函数是当程序第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函数,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地创建一个对象。
C++的构造函数定义格式为:
class <类名>
{
public:
<类名>(参数表);
//...(还可以声明其它成员函数)
};
<类名>::<函数名>(参数表)
{
//函数体
}
如以下定义是合法的:
class T
{
public:
T(int a=0){ i=a; }//构造函数允许直接写在类定义内,也允许有参数表。
private:
int i;
};
如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。
<类名>::<类名>(){},即不执行任何操作。
例子
#include <iostream>using namespace std;class time{public: time()//constructor.构造函数 { hour=0; minute=0; sec=0; } void set_time(); void show_time();private: int hour, minute, sec;};int main(){ class time t1; t1.show_time(); t1.set_time(); t1.show_time(); return 0;}void time::set_time(){ cin>>hour>>minute>>sec;}void time::show_time(){ cout<<hour<<":"<<minute<<":"<<sec<<endl;}
程序运行情况:
0:0:0
10 11 11 回车
10:11:11
任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
PHP的构造函数
void__construct( [mixed args [, ...]] )
php 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
注:如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。
例子 使用新标准的构造函数
<?phpclassBaseClass{function__construct(){print"InBaseClassconstructor/n";}}classSubClassextendsBaseClass{function__construct(){parent::__construct();print"InSubClassconstructor/n";}}$obj=newBaseClass();$obj=newSubClass();?>
为了实现向后兼容性,如果 php 5 在类中找不到__construct()函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为__construct()的方法,但它却又不是构造函数。
Python的构造函数
定义格式为
class <类名>:
__init__(self [,参数表]):
#函数体
#其它的方法和属性
其他特点
1.它的函数名与类名相同;
2.它可以重载;
3.不能指定返回类型,即使是void也不行;
4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显式调用。有些时候是一定要显式调用的,只要是父类有带参的构造函数,在子类中就必须显式的调用父类的构造函数,因为子类的构造器在实例化时无法找到父类的构造函数(当父类有自己写的无参构造函数时,子类也不用显式调用)。
void__destruct( void )
php 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引。
语法
Java, C++, C#, ActionScript和PHP 4中的命名规范会要求构造器函数的名称与它所在类的名称相同。
PHP 5 建议的构造器函数名称为__construct。为了保证向下兼容,__construct方法无法找到时会调用任何跟类名同名的方法作为构造器。从 PHP 5.3.3 起,这种途径只对非名字空间的类有效。
在Perl里,构造器被约定俗成地命名为"new",并且会完成创建对象的大量工作。
在 Perl 的 Moose 对象系统中,构造函数(叫做 new)是自动生成的,程序员可以通过指定一个 BUILD 方法来对其进行扩充。
在 Visual Basic .NET里,构造器被命名为New,是个 Sub。
Python里构造器的被分为 __new__ 和 __init__ 两个方法。__new__方法负责为实例分配内储存空间,并接受自身的类作为参数(一般命名为 cls)。__init__方法接受被新建的实例作为参数(一般称为 self)。
Object Pascal 的构造函数用关键字 constructor 标识,并且可以起任意名字(但一般来说会被起名为 Create)。
Objective-C 的构造函数分成两个方法,alloc 和 init。alloc 方法分配内存,init 负责初始化。new 方法会调用 alloc 和 init 两者。
内存机制
在 Java, C# 和 VB .NET 里,构造器会在一种叫做堆的特殊数据结构里创建作为引用类型的实例。值类型(例如 int, double 等等)则会创建在叫做栈的有序数据结构里。VB .NET and C# 会允许用new来创建值类型的实例。然而在这些语言里,即使使用这种方法创建的对象依然只会在栈里。
在 C++ 里,不用 new 创建的对象会保存在栈里,使用 new 创建时则会在堆里。它们必须分别使用析构函数或者delete操作才能被删除。
语言细节
Java
在Java里,构造器和其他方法的主要差别在于:
构造器不具有任何显性返回类型。
构造器无法被直接“new” invokes them).
构造器无法被标示为synchronized, final, abstract, native, 或者static。
Java 里的构造器会按照以下顺序完成下列工作:
将类变量初始到缺省值。(byte, short, int, long, float, 和 double 变量会默认设为它们相应的0值,booleans 会被设为 false, chars 会被设为空字符('\u0000'),对象引用会被设为 null)
引用父类的构造器,如果没有定义任何构造器。
将实例变量初始化到指定值。
执行构造器内的代码。
在 Java 中可以通过关键词super访问父类的构造器。
public class Example{ // Definition of the constructor. public Example() { this(1); } // Overloading a constructor public Example(int input) { data = input; // This is an assignment } // Declaration of instance variable(s). private int data;}
// Code somewhere else// Instantiating an object with the above constructorExample e = new Example(42);
不接收任何参数的构造器被称作“无参数构造器”。
Visual Basic .NET
在Visual Basic .NET中, 构造函数以"New"为定义方法,并且必须是个 Sub。
Class Foobar Private strData As String ' Constructor Public Sub New(ByVal someParam As String) strData = someParam End SubEnd Class
' code somewhere else' instantiating an object with the above constructorDim foo As New Foobar(".NET")
C#
public class MyClass{ private int a; private string b; // Constructor public MyClass() : this(42, "string") { } // Overloading a constructor public MyClass(int a, string b) { this.a = a; this.b = b; }}
// Code somewhere// Instantiating an object with the constructor aboveMyClass c = new MyClass(42, "string");
C# 静态构造函数
在C#中,静态构造函数是用来初始化任何静态数据。静态构造函数也称为“类构造函数”,由于类构造函数在生成的 MSIL 里名为“.cctor”,因此也被称为“cctor”。
静态构造函数允许复杂的静态变量初始化。
静态构造函数在该类第一次被访问时调用,任何使用该类的操作(无论是调用静态函数、属性还是访问静态变量,还是构造类的实例)都会引发静态构造函数的执行。静态构造函数是线程安全的,并且是单例的。当用在泛型类中时,静态构造函数对于泛型的每个实例化都调用一次。静态变量也同样如此。
public class MyClass{ private static int _A; // Normal constructor static MyClass() { _A = 32; } // Standard default constructor public MyClass() { }}// Code somewhere// Instantiating an object with the constructor above// right before the instantiation// The variable static constructor is executed and _A is 32MyClass c = new MyClass();
C++
C++ 的构造函数以该类的类名为标识,且不写返回值类型也无法返回值:
class C{public: C(void){ ... }};
构造函数的函数体执行是在各个成员构造完之后才开始,因此要想更改成员的构造方式需要使用成员初始化列表:
class D: public B{public: D(void): B("Hello, world!"){ ... }};
复制构造函数接受同类对象的左值引用(一般为 const T &)、移动构造函数接受右值引用(一般为 T&&):
class E{public: E(const E &e){...}//Copy constructor E(E &&e){...}//Move constructor};
C++ 中,程序员若未对某类定义构造函数(以及赋值函数、析构函数),编译器在满足条件时会定义相应的函数。
Ruby
irb(main):001:0> class ExampleClassirb(main):002:1> def initializeirb(main):003:2> puts "Hello there"irb(main):004:2> endirb(main):005:1> end=> nilirb(main):006:0> ExampleClass.newHello there=> #<ExampleClass:0x007fb3f4299118>
怎么自学数据分析?
这是一份数据分析师的入门指南,它包含七周的内容,Excel、数据可视化、数据分析思维、数据库、统计学、业务、以及Python。
每一周的内容,都有两到三篇文章细致讲解,帮助新人们快速掌握。这七周的内容刚好涵盖了一位数据分析师需要掌握的基础体系,也是一位新人从零迈入数据大门的知识手册。
第一周:Excel
每一位数据分析师都脱离不开Excel。
它是日常工作中最常用的工具,如果不考虑性能和数据量,它可以应付绝大部分分析工作。虽然现在机器学习满地走,Excel依旧是无可争议的第一工具。
Excel的学习分为两个部分。
掌握各类功能强大的函数,函数是一种负责输入和输出的神秘盒子。把各类数据输入,经过计算和转换输出我们想要的结果。
在SQL,Python以及R中,函数依旧是主角。掌握Excel的函数有助于后续的学习,因为你几乎在编程中能找到名字一样或者相近的函数。
在「数据分析:常见的Excel函数全部涵盖在这里了」中,介绍了常用的Excel函数。
清洗处理类:trim、concatenate、replace、substitute、left/right/mid、len/lenb、find、search、text
关联匹配类:lookup、vlookup、index、match、row、column、offset
逻辑运算类:if、and、or、is系列
计算统计类:sum/sumif/sumifs、sumproduct、count/countif/countifs、max、min、rank、rand/randbetween、averagea、quartile、stdev、substotal、int/round
时间序列类:year、month、weekday、weeknum、day、date、now、today、datedif
搜索能力是掌握Excel的不二窍门,工作中的任何问题都是可以找到答案。
第二部分是Excel中的工具。
在「数据分析:Excel技巧大揭秘」教程,介绍了Excel最具性价比的几个技巧。包括数据透视表、格式转换、数组、条件格式、自定义下拉菜单等。正是这些工具,才让Excel在分析领域经久不衰。
在大数据量的处理上,微软提供了Power系列,它和Excel嵌套,能应付百万级别的数据处理,弥补了Excel的不足。
Excel需要反复练习,实战教程「数据分析:手把手教你Excel实战」,它通过网络上抓取的数据分析师薪资数据作为练习,总结各类函数的使用。
除了上述要点,下面是附加的知识点,铺平数据分析师以后的道路。
了解单元格格式,数据分析师会和各种数据类型打交道,包括各类timestamp,date,string,int,bigint,char,factor,float等。
了解数组,以及相关应用(excel的数组挺难用),Python和R也会涉及到 list,是核心概念之一。
了解函数,深入理解各种参数的作用。它会在学习Python中帮助到你。
了解中文编码,UTF8、GBK、ASCII,这是数据分析师的坑点之一。
第二周:数据可视化
数据分析界有一句经典名言,字不如表,表不如图。
数据可视化是分析的常用技巧之一,不少数据分析师的工作就是通过图表观察和监控数据。首先了解常用的图表:
Excel的图表可以100%绘制上面的图形,但这只是基础。
在「数据可视化:你想知道的经典图表全在这」中介绍了各类数据分析的经典图表,除了趋势图、直方图,还包括桑基图、空间图、热力图等额外的类型。
数据可视化不是图表的美化,而是呈现数据的逻辑之美,是揭示数据的内在关联。了解图表的维度和适用场景,比好看更重要。比如桑吉图就是我一直推崇的图表,它并不知名,但是它能清晰的揭露数据内在状态的变化和流向。案例是用户活跃状态的趋势。
Excel的图表操作很傻瓜化,其依旧能打造出一份功能强大的可视化报表。「数据可视化:教你打造升职加薪的报表」教给大家常用的Excel绘图技巧,包括配色选取,无用元素的剔除、辅助线的设立、复合图表等方法。
Excel图表的创造力是由人决定的,对数据的理解,观察和认知,以及对可视化的应用,这是一条很长的道路。
图表是单一的,当面板上绘制了多张图表,并且互相间有关联,我们常称之为Dashboard仪表盘。
上图就是用分析师薪资数据为数据源绘制的Dashboard,比单元格直观不少。我们常常把绘制这类Dashboard的工具叫做BI。
BI(商业智能)主要有两种用途。一种是利用BI制作自动化报表,数据类工作每天都会接触大量数据,并且需要整理汇总,这是一块很大的工作量。这部分工作完全可以交给BI自动化完成,从数据规整、建模到下载。
另外一种是使用其可视化功能进行分析,它提供比Excel更丰富的交互功能,操作简单,而且美观,如果大家每天作图需要两小时,BI能缩短大半。
在「数据可视化:手把手打造BI」教程中,以微软的PowerBI举例,教大家如何读取数据,规整和清洗数据,绘制图表以及建立Dashboard。最后的成果就是上文列举的分析师案例。
BI还有几个核心概念,包括OLAP,数据的联动,钻取,切片等,都是多维分析的技巧,也是分析的核心方法之一。
后续的进阶可视化,将和编程配合。因为编程能够提供更高效率和灵活的应用。而BI也是技术方向的工具,了解技术知识对应用大有帮助。
第三周:数据分析思维数据分析能力的高低,不以工具和技巧决定,而以分析思维决定。
在一场战争中,士兵装备再好的武装,进行再严苛的训练,若是冲锋的方向错了,那么迎接他们的唯有一败涂地。
分析思维决定一场「数据战争」中的冲锋方向。只有先养成正确的分析思维,才能使用好数据。
既然是思维,它就倾向于思考的方式,Excel函数学会了就是学会,分析则不同。大多数人的思维方式都依赖于生活和经验做出直觉性的判断,以「我觉得我认为」展开,好的数据分析首先要有结构化的思维。
麦肯锡是其中领域的佼佼者,创建了一系列分析框架和思维工具。最典型地莫过于金字塔思维。
这篇文章简述了该思维的应用,「快速掌握麦肯锡的分析思维」。你能学会结构化思考,MECE原则,假设先行,关键驱动等方法论。
除此以外,还有SMART、5W2H、SWOT、4P4C、六顶思考帽等,这些都是不同领域的框架。框架的经典在于,短时间内指导新人如何去思考,它未必是最好的,但一定是性价比最优的。数据分析思维,是分析思维的引申应用。再优秀的思考方式,都需要佐证和证明,数据就是派这个用处的,「不是我觉得,而是数据证明」。
现代管理学之父彼得·德鲁克说过一句很经典的话:如果你不能衡量它,那么你就不能有效增长它。如果把它应用在数据领域,就是:如果你不能用指标描述业务,那么你就无法有效增长它。每一位数据分析师都要有指标体系的概念,报表也好,BI也好,即使机器学习,也是围绕指标体系建立的。
下图就是一个典型的指标体系,描述了用户从关注产品、下载、乃至最后离开的整个环节。每一个环节,都有数据及指标以查询监控。
不同业务背景需要的指标体系不同,但有几个建立指标的通用准则。这篇文章深入介绍了「如何建立数据分析的思维框架」。你将区分什么是好指标、什么是坏指标、比率和比例、指标的结构、指标设立的维度等概念。
数据分析不是一个结果,而是一个过程。几乎所有的分析,最终目的都是增长业务。所以比分析思维更重要的是驱动思维落地,把它转化为成果。
数据分析思维是常年累月养成的习惯,一周时间很难训练出来,但这里有一个缩短时间的日常习惯。以生活中的问题出发做练习。
这家商场的人流量是多少?怎么预估?
上海地区的共享单车投放量是多少?怎么预估?
街边口的水果店,每天的销量和利润是多少?怎么预估?
这些开放性问题起源于咨询公司的训练方法,通过不断地练习,肯定能有效提高分析思维。另外就是刷各种CaseBook。
优秀的数据分析师会拷问别人的数据,而他本身的分析也经得起拷问。
第四周:数据库
Excel很容易遇到瓶颈,随着业务的发展,分析师接触的数据会越来越多。对大部分人的电脑,超过十万条数据,已经会影响性能。何况大数据时代就是不缺数据,这时候就需要学习数据库了。
即使非数据岗位,也有越来越多的产品和运营被要求使用SQL。
很多数据分析师戏称自己是跑SQL的,这间接说明SQL在数据分析中有多核心。从Excel到SQL绝对是处理效率的一大进步。
教程内容以MySQL为主,这是互联网行业的通用标准。其实语法差异不大的。
新手首先应该了解表的概念,表和Excel中的sheet类似。「写给新人的数据库指南」是一篇入门基础文章,包括表、ID索引、以及数据库的安装,数据导入等简单知识。
SQL的应用场景,均是围绕select展开。增删改、约束、索引、数据库范式均可以跳过。新手在「SQL,从入门到熟练」教程会学习到最常见的几个语法,select、where、group by、if、count/sum、having、order by、子查询以及各种常用函数。
数据还是分析师薪资数据,它可以和Excel实战篇结合看,不少原理都是相通的。
想要快速掌握,无非是大量的练习。大家可以在leetcode上做SQL相关的练习题,难度从简单到困难都有。「SQL,从熟练到掌握」教程中将会带领大家去刷一遍。
join对新手是一个很绕的概念,教程会从图例讲解,逐步提高难度。从一开始的join关联,到条件关联、空值匹配关联、子查询关联等。最后完成leetcode中的hard模式。
如果想要更进一步,可以学习row_number,substr,convert,contact等函数。不同数据平台的函数会有差异,例如Presto和phpMyAdmin。再想提高,就去了解Explain优化,了解SQL的工作原理,了解数据类型,了解IO。知道为什么union比or的效率快,这已经和不少程序员并驾齐驱。
第五周:统计学
很多数据分析师并不注重统计学基础。
比如产品的AB测试,如果相关人员不清楚置信度的含义和概念,那么好的效果能意味着好么?如果看待显著性?
比如运营一次活动,若不了解描述统计相关的概念,那么如何判别活动在数据上的效果?可别用平均数。
不了解统计学的数据分析师,往往是一个粗糙的分析师。如果你想要往机器学习发展,那么统计学更是需要掌握的基础。
统计知识会教大家以另一个角度看待数据。如果大家了解过《统计数据会撒谎》,那么就知道很多数据分析的决策并不牢靠。
在第一篇教程「解锁数据分析的正确姿势:描述统计」,会教给大家描述统计中的诸多变量,比如平均数、中位数、众数、分位数、标准差、方差。这些统计标准会让新手分析师从平均数这个不靠谱的泥潭中出来。
箱线图就是描述统计的大成者,好的分析师一定是惯用箱线图的常客。
第二篇「解锁数据分析的正确姿势:描述统计(2)」将会结合可视化,对数据的分布进行一个直观的概念讲解。很多特定的模型都有自有的数据分布图,掌握这些分布图对分析的益处不可同日而语。
直方图和箱线图一样,将会是长久伴随分析师的利器。
统计学的一大主要分支是概率论,概率是度量一件事发生的可能性,它是介于0到1之间的数值。很多事情,都可以用概率论解释,「概率论的入门指南」和「读了本文,你就懂了概率分布」都是对其的讲解。
包括贝叶斯公式、二项概率、泊松概率、正态分布等理论。理论不应用现实,那是无根之木,教程中会以运营活动最常见的抽奖概率为讲解,告诉大家怎么玩。
其实数据分析中,概率应用最广泛和最全面的知识点,就是假设检验,大名鼎鼎的AB测试就是基于它的。俗话说得好,再优秀的产品经理也跑不过一半AB测试。
何为假设检验?假设检验是对预设条件的估计,通过样本数据对假设的真伪进行判断。
产品改版了,用户究竟喜不喜欢?调研的评分下降了,这是用户的评价降低了,还是正常的数据波动呢?这些都是可以做假设检验的。它可以说是两面两篇文章的回顾和应用。
「数据分析必须懂的假设检验」依旧以互联网场景讲解各种统计技巧的应用。假设检验并不难,通过Excel的几个函数就能完成。它的难点在于诸多知识点和业务的结合使用,实际公式不需要掌握的多透彻,了解背后的意义更重要。
统计学是一个很广阔的领域,包括方差分析,时间序列等,都有各自不同的应用。大家若感兴趣,可以去阅读各类教材,没错,教材是学习统计学最优的方式。我这类文章堪堪算入门罢了。
第六周:业务
对于数据分析师来说,业务的了解比数据方法论更重要。举个例子,一家O2O配送公司发现在重庆地区,外卖员的送货效率低于其他城市,导致用户的好评率降低。总部的数据分析师建立了各个指标去分析原因,都没有找出来问题。后来在访谈中发觉,因为重庆是山城,路面高低落差比较夸张,很多外卖人员的小电瓶上不了坡…所以导致送货效率慢。这个案例中,我们只知道送货员的送货水平距离,根本不知道垂直距离。这是数据的局限,也是只会看数据的分析师和接地气分析师的最大差异。业务形态千千万万,数据分析师往往难窥一二。我的公众号业务部分也涉及了不少,大家可以通过这几篇文章了解。
一篇文章读懂活跃数据;深入浅出,用户生命周期的运营;获取新增用户,运营都应该知道的事;运营的商业逻辑:CAC和CLV;从零开始,构建数据化运营体系;读懂用户运营体系:用户分层和分群,这些都是互联网运营相关的内容,或多或少涉及了不少业务方面的概念,数据分析人员可以选择性的挑选部分内容。了解业务的数据分析师在职场发展上会更加顺利。
而在「最用心的运营数据指标解读」中,我尝试总结了几个泛互联网领域的指标和业务模型,它们都是通用的框架。
产品运营模型:以移动端APP为主体,围绕AARRR准则搭建起数据框架。包括Acquisition用户获取、Activation用户活跃、Retention用户留存、Revenue营收、Refer传播,以及细分指标。
市场营销模型:以传统的市场营销方法论为基底,围绕用户的生命周期建立框架。包括用户生命周期,生命周期价值、用户忠诚指数、用户流失指数、用户RFM价值等。
流量模型:从早期的网站分析发展而来,以互联网的流量为核心。包括浏览量曝光率、病毒传播周期、用户分享率、停留时间、退出率跳出率等。
电商和消费模型:以商品的交易、零售、购买搭建而起。包括GMV、客单价、复购率、回购率、退货率、购物篮大小、进销存,也包含SKU、SPU等商品概念。
用户行为模型:通过用户在产品功能上的使用,获得精细的人群维度,以此作为分析模型。包括用户偏好、用户兴趣、用户响应率、用户画像、用户分层,还包含点赞评论浏览收藏等功能的相关指标。
除了上述的几个常见模型,数据分析还有其他分支。比如SEO/SEM,虽然可以归类到流量模型,但它并不简单。比如财务分析,商业的各种成本支出也需要专人负责。
在业务知识外,业务层面的沟通也很重要。业务线足够长的时候,沟通往往成为老大难的问题。
业务学习没有捷径,哪怕掌握了诸多模型,不同行业间的业务壁垒会是分析师们的门槛。金融的各类专有领域知识,电子商务不同产品的特性,这些都会影响到分析报告的质量。
在早期,新人最好选择一到两个领域深入了解其业务,然后以此拓展边界。
第七周:Python/R
第七周是最后的学习环节。
是否具备编程能力,是初级数据分析和高级数据分析的风水岭。数据挖掘、BI、爬虫、可视化报表都需要用到编程。掌握一门优秀的编程语言,可以让数据分析师升职加薪,迎娶白富美。数据分析领域最热门的两大语言是R和Python。R的优点是统计学家编写的,缺点也是统计学家编写。涉及各类统计函数和工具的调用,R无疑有优势。但是大数据量的处理力有不逮,学习曲线比较陡峭。
Python则是万能的胶水语言,适用性强,可以将分析的过程脚本化。Pandas、Numpy、SKLearn等包也是非常丰富。
这里的教程以Python为主。
「开始Python的新手教程」将会教大家搭建数据分析环境,Anaconda是功能强大的数据科学工具。Python建议安装Python3+版本,不要选择Python2了。
Python的语法相当简洁,大家print出第一个hello world顶多半小时。就像在Excel上进行运算一样方便。
「开始Python的数据结构」介绍给大家Python的三类数据结构,列表list,元组tuple,以及字典dict。万变不离其宗,掌握这三种数据结构以及相对应的函数,足够应付80%的分析场景。函数式编程为Python一大特色,Python自身就提供不少丰富的函数。很多都和Excel的函数相通,掌握起来非常迅速。另外还有控制流,for、while、if,通常配合函数组合使用。
「了解和掌握Python的函数」教大家如何自定义函数,丰富的函数虽然能偷懒,但是不少场景下,还是需要自己动手撸一个。
能够调第三方包解决,就使用第三方的函数。如果是一个频繁使用的场景,而第三方依靠不了,就自己编一个函数。如果是临时性的场景,写得粗糙点也无所谓。毕竟分析师的代码能力不要求工程师那么严格,所以Python的学习尽量以应用为主,不用像分析师那么严格。
包、模块和类的概念属于进阶知识,不学也不要紧。
「Python的数据分析: numpy和pandas入门」介绍了数据分析师赖以生存的两个包,numpy和pandas,其他Python知识可以不扎实,这两个最好认真掌握。它是往后很多技能树的前置要求。
array,series,dataframe是numpy和pandas的三个数据结构,掌握它们,便算是入门了。后续的两篇教程都是实战。
「用pandas进行数据分析实战」以分析师的薪资作为实战数据。Excel、BI、SQL,一路走来,大家想必对它无比熟悉,这也是最后一次使用它了。教程通过Pandas的各类功能,绘制出一副词云图。
rdt是啥意思?
RDT(Ruby Development Tools),一组Eclipse插件,使得Eclipse能支持Ruby开发。而Eclipse是一个功能强大的跨平台集成开发环境,支持对java,jsp,php等地开发。
对接影视接口的公众号?
工具准备:一部已经登入微信的手机,一台电脑(另一部手机也行),一个已实名且满18岁的微信号(没有18岁可以拿长辈)。
微信公众号教程开始(一共就两步,5分钟搞定)
1,注册微信公众平台账号
电脑或备用手机打开微信公众平台进行注册微信订阅号(个人用户只能注册订阅号,用起来和公众号一样的。)
注册链接直达:https://url.cn/59FBoDt
2,登入和配置公众号
登入的时候需要使用已登入微信公众号的手机扫码。
登入后把页面滑到底部找到基本配置
进行修改配置(我已经启用了,没启用的先启用)
配置信息:
Url填:http://域名/wx_api.php
Token填:452776
(接口随时可能更新,请保存此教程链接以免失去组织)
配置如图: