~~~~~~~~~~~~~~~开始很难,但难方能可贵

# 卡卡卡………………壳

每次在学习新东西时,总会在软件尤其是软件安装部分,卡卡卡………………壳

# 开头难难难……………

比如,上次的SQL、这次的Python、还有很久很久之前Octave与Matlab ,都是安装过程的痛楚远远远大于软件的学习,万事开头难难难………………

# 记录自己脑海中的第一反应

每个人可能遭遇挫折情况不一,对于我,因为无数次的安装痛楚的经历,如何克服这种每次一遇到要安装软件的情况就胆怯,我其实有去百度,找到一个欣喜若狂的答案——记录自己脑海中的第一反应,对就是你看到这句话时现在的反应,它其实是通过优化自己的思维模式,来逐步转化潜意识里已有的心理状态。

记录 是需要写下来的,纸质电子都可以,记录的好处在于,可以很直观的与自己对话,感知你的情绪、反应,感知到了,才有可能不断调整自己的行为,行为又反过来继续优化,形成正循环。

我们无法在付出同样的行动后,奢求不同的结果,二者是相伴相生,一定是现有改变,才能带来不同,而改变始于认知。

~~~~~~~~~~~~~~~你需要知道你为什么要学Python

# 战略上的懒惰

做很多事情,大多数人会习惯于用战术的勤奋掩饰战略的懒惰,或者说,在我们的通识教育中,并没有一块内容,是针对如何做出一个新的选择,如何适应新的变化,如何以高屋建瓴的方式用战略指导行动的,以帮助我们自己实现所想所需。

# 只见树木 不见森林

就像是在新学期新开始,面对新课本,学校老师会直接从第一章第一节课讲起一样,一头扎进细枝末节,就这样很容易只见眼前树木,不见整片森林。缺少了这方面的意识和针对性的训练,很容易在学习过程中,在遇到困惑时随即陷入牛角尖,忘记了初心,而不知所终。

# 学习Python用来进行高效分析

Python首先是一门非常流行的编程语言,是进入机器学习阶段的基础语言,由于当前excel SQL运行环境的单一,无法实现多元化的功能,而Python则提供了强大的数据分析套件,不需要从零开发,简洁、效率高,易读性高,对于未来想走人工智能、深度学习方向的转行人,非常适合入门。

~~~~~~~~~~~~~~~你需要知道如何快速学习一门新的技能

在明确为什么要学习Python之后,接下来我们所需要明确的就是:

如何能快速学习一门新的技能使其达到可以满足自己使用需求的地步?

注意 这里一定是 满足你自己的需求才行

# 一万小时定律:

关于技能学习,我们大多数人耳熟能详的一个方法是进行刻意练习,而这需要的一万个小时,按照这个训练量,每天3小时需要10年多才可以从新手到大师。这对于我们

# 20 hours in four steps:

但在TED一个演讲中,一位分享者提出一个全新的学习方法,足以颠覆我们之前的观点,那就是可以用关键的20小时,快速学会任何技能,注意这里是任何技能。

他将这项过程,拆分成以下四个步骤:

1、Deconstruct the skill 分解技能,找到最重点的部分先行练习

2、Learn enough to self-correct 努力学习参考资料进行自我纠错

3、Remove practice barriers 移除阻碍进行专注练习的障碍

4、Practice at least 20 hours 练够至少20个小时

~~~~~~~~~~~~~~~你需要找到在最初学习Python时的重点

按照以上步骤,对应的,我们可以将Python的学习任务进行拆解,分析熟练掌握Python到底需要关注哪些问题,将时间放在最出成效的重心部分:

数据分析目的

  • ——利用Python内置的集成数据分析语言,如numpy、scipy、matplotlib、pandas、scikit-learn等,快速实现海量数据的复杂运算、可视化、建模等功能,为运营提供可行的数据驱动建议

数据分析运营环境

  • ——ANACONDA 与 Jupyter Notebook

数据的准备

  • ——数据的类型(字符串、数字、容器、布尔、None)与操作(增加、修改、删除、查询等)

数据的运算

  • ——函数、条件判断、循环

内置函数、包及模块的针对性学习

  • ——在案例中边学边用


~~~~~~~~~~~~~~~~再接下来,才是Python具体的基础语法

后文对Python中的数据类型、数据的各式运算进行基础的练习,以对后续数据分析中所依赖的 数据 如何在Python中进行表述有个清晰的认识,打牢地基才能盖房子。

1.1数据

数据为Python软件中的主要被操作对象, 巧妇难为无米之炊的米,其可来自于用户输入,或者自软件运行中产生。

Python中的数据类型可大致分为以下五种,字符串、数字、容器、布尔、None


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组


1.1 数据类型1: 字符串 '☺'


python定义一个空的对象数组 python 定义空数组_Python_02


格式化字符串


python定义一个空的对象数组 python 定义空数组_python 定义空数组_03


1.2 数据类型2:数字

  • 数字中不同的类型:整型、浮点型:可类比数学中的整数与小数


python定义一个空的对象数组 python 定义空数组_Python_04


1.3数据类型3:容器

容器可看做是多个数据的集合,可包含其他对象的对象,实质上是一种数据结构,不同的容器内包含具有相同或相似属性的不同数据值的集合。

熟练掌握各种容器的含义及特性,根据数据的属性存储至恰当的容器中至关重要,下面对容器的不同类型与操作基础的学习与记录。

容器的类型:

根据容器内的数据间的关系,可分为序列与映射,其中

  • 序列包括 列表 List元祖 Tuple,序列中的每个数据呈有序状态,每个元素均有下标
  • 映射类的容器包括 字典 Dictionary,映射中的,每个元素均有名称(键),无序

除以上两种,还有一种容器为 集合 Sets

1.3.1容器类型1 列表 List [ '☺','☺']

  • 注意列表的定义


python定义一个空的对象数组 python 定义空数组_Python_05


  • 列表的操作

#1 增加


python定义一个空的对象数组 python 定义空数组_数据_06


#2 删除


python定义一个空的对象数组 python 定义空数组_数据_07


#3 修改


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_08


#4 查询


python定义一个空的对象数组 python 定义空数组_数据_09


1.3.2 容器类型2 元祖 Tuple ('☺','☺')

  • 元组是静态数组,不可变,其内部数据一旦创建便无法改变。

与列表的比较

相同:

  • 同为序列型的数据结构,支持切片、迭代等操作

不同:

  • 列表为动态数组,而元组为静态数组,它的内容、大小均无修改或改变,可用来储存值恒定的数据组。
  • 元组用圆括号(),列表用方括号[ ]
  • 元组由于不可修改特性,只能对元组执行 查询 [ ]操作


python定义一个空的对象数组 python 定义空数组_数据_10


1.3.3 容器类型3 字典 Dictionary { '01' : '☺', '02' : '☺'}

字典:

存储映射关系,为无序数组,由键和相应的值组成,且键必须唯一,二者通过冒号:连接(键:值)

访问:通过 键 来访问集合

  • 字典的定义:


python定义一个空的对象数组 python 定义空数组_数据_11


  • 字典的操作

#1 增加


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_12


  • 错误示范:

注意字典与列表增加元素时的差异,字典无序列,故等号左边不以 元素序号 为索引,而是直接以 键‘05’为基础,等号右边全部为 键对应的值


python定义一个空的对象数组 python 定义空数组_数据_13


#2 删除


python定义一个空的对象数组 python 定义空数组_Python_14


#3 查询与修改


python定义一个空的对象数组 python 定义空数组_数据_15


1.3.4 容器类型4 集合Sets { '☺', 'o(╥﹏╥)o'}

集合中不包括重复的元素,而列表中可存在重复的元素

  • 集合的定义:


python定义一个空的对象数组 python 定义空数组_Python_16


  • 集合的操作:

# 1 增加


python定义一个空的对象数组 python 定义空数组_python 定义空数组_17


# 2 查找 返回的是 bool 值True or False


python定义一个空的对象数组 python 定义空数组_python 定义空数组_18


# 3 删除


python定义一个空的对象数组 python 定义空数组_数据_19


# 4 修改 先discard 后update

1.4数据类型4:布尔

Python的布尔类型有两个值:True和False,Bool值为常量,通常用于条件判断或循环语句中

  • 注意逻辑运算符 and or not 运算结果的bool判断
  • 如 A and B, 当且仅当A、B均为True时,结果才为True

1.5数据类型5:None

None是特殊的空值,为常量,是Python中独有的,其他语言中有Null 而Python中没有,取而代之的是None

  • None不等于0 ,空的字符串‘ ’、空的容器如[ ]、( )、{ }
  • None没有len,size等属性

2、条件判断

代码块:

  • if 边界条件 1:
  • (缩进) 要执行的动作1
  • (elif 边界条件2:
  • (缩进) 要执行的动作2
  • ……)
  • else:
  • 缩进 要执行的动作

tips:边界条件

比较对象:可以是各种数据类型,包括

  • 字符串' '、数字、容器( [ ]、{ }、())、或者输入的变量(input)等

运算符:根据比较对象的不同,分别为

  • 值的比较运算 > < >= <= != ==
  • 逻辑比较 and or not

条件判断


python定义一个空的对象数组 python 定义空数组_Python_20


多条件判断


python定义一个空的对象数组 python 定义空数组_数据_21


3、循环:批量处理数据
对容器内的每一个数据,按照特定的规则进行重复处理

代码块:

  • for i in 容器:
  • (缩进) 要执行的动作

#3.1 元组的循环

for i in List( )


python定义一个空的对象数组 python 定义空数组_Python_22


#3.2 字典的循环

for key, value in Dic.item()


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_23


#continue:用于跳出当前循环


python定义一个空的对象数组 python 定义空数组_数据_24


#break:用于跳出当前循环


python定义一个空的对象数组 python 定义空数组_python 定义空数组_25


Tips:注意 break 的位置对输出结果的影响,break后的语句不再执行(如下图),所以查询结果满足条件要求时要将 满足该条件后的执行代码 放置break 前。


python定义一个空的对象数组 python 定义空数组_数据_26


4、函数

函数是对输入进行特定计算并输出的过程

  • def 函数名称(参数1,参数2): 输入
  • 函数
  • 输出

#函数的定义与使用


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_27


错误师范:

  • 注意,函数运算输出时,实际输出的结果是函数本身,而不是函数里定义的公式,在下图中,如果print( )里写的是 z ,是无法计算结果的,应该是要写之前定义的 time(x,y)


python定义一个空的对象数组 python 定义空数组_Python_28


注意函数参数的可变属性:

在函数中,参数能否变化,会影响数据传递后的结果

  • 在参数为不可变类型时,传递无法改变数据值,仅相当于复制
  • 而可变数据中,传递的是变量的引用地址

函数按数据的可变属性分为:

  • 不可变数据类型:字符串,元组,数值
  • 可变数据类型:列表等

4、模块

模块的使用

  • import 包名称
  • import 包名称 as 别名
  • from 包名称 import 函数名

# 使用python内置模

# 使用第三方包


python定义一个空的对象数组 python 定义空数组_Python_29


5、数据结构

collections 的三种类型:

  • queue :双向链表:
  • 队列——先进先出


python定义一个空的对象数组 python 定义空数组_Python_30


  • 栈——后进先出


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_31


python定义一个空的对象数组 python 定义空数组_python定义一个空的对象数组_31


  • orderdDict:排序字典


python定义一个空的对象数组 python 定义空数组_Python_33


  • Counter:计数器


python定义一个空的对象数组 python 定义空数组_python 定义空数组_34