~~~~~~~~~~~~~~~开始很难,但难方能可贵
# 卡卡卡………………壳
每次在学习新东西时,总会在软件尤其是软件安装部分,卡卡卡………………壳
# 开头难难难……………
比如,上次的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
1.1 数据类型1: 字符串 '☺'
格式化字符串
1.2 数据类型2:数字
- 数字中不同的类型:整型、浮点型:可类比数学中的整数与小数
1.3数据类型3:容器
容器可看做是多个数据的集合,可包含其他对象的对象,实质上是一种数据结构,不同的容器内包含具有相同或相似属性的不同数据值的集合。
熟练掌握各种容器的含义及特性,根据数据的属性存储至恰当的容器中至关重要,下面对容器的不同类型与操作基础的学习与记录。
容器的类型:
根据容器内的数据间的关系,可分为序列与映射,其中
- 序列包括 列表 List、元祖 Tuple,序列中的每个数据呈有序状态,每个元素均有下标
- 映射类的容器包括 字典 Dictionary,映射中的,每个元素均有名称(键),无序
除以上两种,还有一种容器为 集合 Sets
1.3.1容器类型1 列表 List [ '☺','☺']
- 注意列表的定义
- 列表的操作
#1 增加
#2 删除
#3 修改
#4 查询
1.3.2 容器类型2 元祖 Tuple ('☺','☺')
- 元组是静态数组,不可变,其内部数据一旦创建便无法改变。
与列表的比较
相同:
- 同为序列型的数据结构,支持切片、迭代等操作
不同:
- 列表为动态数组,而元组为静态数组,它的内容、大小均无修改或改变,可用来储存值恒定的数据组。
- 元组用圆括号(),列表用方括号[ ]
- 元组由于不可修改特性,只能对元组执行 查询 [ ]操作
1.3.3 容器类型3 字典 Dictionary { '01' : '☺', '02' : '☺'}
字典:
存储映射关系,为无序数组,由键和相应的值组成,且键必须唯一,二者通过冒号:连接(键:值)
访问:通过 键 来访问集合
- 字典的定义:
- 字典的操作
#1 增加
- 错误示范:
注意字典与列表增加元素时的差异,字典无序列,故等号左边不以 元素序号 为索引,而是直接以 键‘05’为基础,等号右边全部为 键对应的值
#2 删除
#3 查询与修改
1.3.4 容器类型4 集合Sets { '☺', 'o(╥﹏╥)o'}
集合中不包括重复的元素,而列表中可存在重复的元素
- 集合的定义:
- 集合的操作:
# 1 增加
# 2 查找 返回的是 bool 值True or False
# 3 删除
# 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
条件判断
多条件判断
3、循环:批量处理数据
对容器内的每一个数据,按照特定的规则进行重复处理
代码块:
- for i in 容器:
- (缩进) 要执行的动作
#3.1 元组的循环
for i in List( )
#3.2 字典的循环
for key, value in Dic.item()
#continue:用于跳出当前循环
#break:用于跳出当前循环
Tips:注意 break 的位置对输出结果的影响,break后的语句不再执行(如下图),所以查询结果满足条件要求时要将 满足该条件后的执行代码 放置break 前。
4、函数
函数是对输入进行特定计算并输出的过程
- def 函数名称(参数1,参数2): 输入
- 函数
- 输出
#函数的定义与使用
错误师范:
- 注意,函数运算输出时,实际输出的结果是函数本身,而不是函数里定义的公式,在下图中,如果print( )里写的是 z ,是无法计算结果的,应该是要写之前定义的 time(x,y)
注意函数参数的可变属性:
在函数中,参数能否变化,会影响数据传递后的结果
- 在参数为不可变类型时,传递无法改变数据值,仅相当于复制
- 而可变数据中,传递的是变量的引用地址
函数按数据的可变属性分为:
- 不可变数据类型:字符串,元组,数值
- 可变数据类型:列表等
4、模块
模块的使用
- import 包名称
- import 包名称 as 别名
- from 包名称 import 函数名
# 使用python内置模
# 使用第三方包
5、数据结构
collections 的三种类型:
- queue :双向链表:
- 队列——先进先出
- 栈——后进先出
- orderdDict:排序字典
- Counter:计数器