![376742b58961901e0d29a9af1064ab8a.png](https://i-blog.csdnimg.cn/blog_migrate/e51be786b418429945676a9dd010669f.jpeg)
~~~~~~~~~~~~~~~开始很难,但难方能可贵
# 卡卡卡………………壳
每次在学习新东西时,总会在软件尤其是软件安装部分,卡卡卡………………壳
# 开头难难难……………
比如,上次的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)与操作(增加、修改、删除、查询等)
数据的运算
- ——函数、条件判断、循环
内置函数、包及模块的针对性学习
- ——在案例中边学边用
![ef554eb80777a675abf5b560b3145677.png](https://i-blog.csdnimg.cn/blog_migrate/d88ce9ef3eb1376d5dfdd854a8a4b8a4.jpeg)
~~~~~~~~~~~~~~~~再接下来,才是Python具体的基础语法
后文对Python中的数据类型、数据的各式运算进行基础的练习,以对后续数据分析中所依赖的 数据 如何在Python中进行表述有个清晰的认识,打牢地基才能盖房子。
1.1数据
数据为Python软件中的主要被操作对象, 巧妇难为无米之炊的米,其可来自于用户输入,或者自软件运行中产生。
Python中的数据类型可大致分为以下五种,字符串、数字、容器、布尔、None
![4ca7247d8c025871e0c765739434bf25.png](https://i-blog.csdnimg.cn/blog_migrate/de22dbf9298737712bc167bd10e35efd.jpeg)
1.1 数据类型1: 字符串 '☺'
![9be39f29261d1a1239ff81df1887920c.png](https://i-blog.csdnimg.cn/blog_migrate/c76d93ad1966637d7d99033a9f4b0736.jpeg)
格式化字符串
![e0e7b282e4af5e84b94e5141b21ab25c.png](https://i-blog.csdnimg.cn/blog_migrate/ada1e112600be50ddb4583c3783fb420.jpeg)
1.2 数据类型2:数字
- 数字中不同的类型:整型、浮点型:可类比数学中的整数与小数
![e0842d5b9b87a4d2df68a4a448987a90.png](https://i-blog.csdnimg.cn/blog_migrate/e85bc510fcaf9af8293a198dad2fb6db.jpeg)
1.3数据类型3:容器
容器可看做是多个数据的集合,可包含其他对象的对象,实质上是一种数据结构,不同的容器内包含具有相同或相似属性的不同数据值的集合。
熟练掌握各种容器的含义及特性,根据数据的属性存储至恰当的容器中至关重要,下面对容器的不同类型与操作基础的学习与记录。
容器的类型:
根据容器内的数据间的关系,可分为序列与映射,其中
- 序列包括 列表 List、元祖 Tuple,序列中的每个数据呈有序状态,每个元素均有下标
- 映射类的容器包括 字典 Dictionary,映射中的,每个元素均有名称(键),无序
除以上两种,还有一种容器为 集合 Sets
1.3.1容器类型1 列表 List [ '☺','☺']
- 注意列表的定义
![d7ccd74b6726c6b753131456652261ff.png](https://i-blog.csdnimg.cn/blog_migrate/eff3ea54e35f745a4e637e54b3eff524.jpeg)
- 列表的操作
#1 增加
![4ad788993e9c715796fa6df0ea9f6462.png](https://i-blog.csdnimg.cn/blog_migrate/f6d5be5daef70b8a2721c3650f2f13d7.jpeg)
#2 删除
![71fd26d855c8493e575ec60efe245490.png](https://i-blog.csdnimg.cn/blog_migrate/c4cbee72943a1ea068eb3322ce27f315.jpeg)
#3 修改
![fdf0f29f3eb03b12c9857355827c4d9b.png](https://i-blog.csdnimg.cn/blog_migrate/772e95a701f1f74c3ed3bfeeeb1de964.jpeg)
#4 查询
![6efac8ef36557bdb6e04c0dff9de4a54.png](https://i-blog.csdnimg.cn/blog_migrate/35d5d37dcf7bc89cbed1b000186835a3.jpeg)
1.3.2 容器类型2 元祖 Tuple ('☺','☺')
- 元组是静态数组,不可变,其内部数据一旦创建便无法改变。
与列表的比较
相同:
- 同为序列型的数据结构,支持切片、迭代等操作
不同:
- 列表为动态数组,而元组为静态数组,它的内容、大小均无修改或改变,可用来储存值恒定的数据组。
- 元组用圆括号(),列表用方括号[ ]
- 元组由于不可修改特性,只能对元组执行 查询 [ ]操作
![6a492b654f1a55edaab9d0dd20baacbf.png](https://i-blog.csdnimg.cn/blog_migrate/d6ad363040af563fa1ce1d831b9b8cfb.jpeg)
1.3.3 容器类型3 字典 Dictionary { '01' : '☺', '02' : '☺'}
字典:
存储映射关系,为无序数组,由键和相应的值组成,且键必须唯一,二者通过冒号:连接(键:值)
访问:通过 键 来访问集合
- 字典的定义:
![841b38eeabc4b8dfc65066c6d2cef8c3.png](https://i-blog.csdnimg.cn/blog_migrate/bf09b9b94f4c1ea8107024c957fb1347.jpeg)
- 字典的操作
#1 增加
![13222c9b9336e24a11d2a7fbe3f8d366.png](https://i-blog.csdnimg.cn/blog_migrate/ee6b1dc9f8978b262f7381ab8169f101.jpeg)
- 错误示范:
注意字典与列表增加元素时的差异,字典无序列,故等号左边不以 元素序号 为索引,而是直接以 键‘05’为基础,等号右边全部为 键对应的值
![42e723bb9ad2662c0cba5e9a6ee841f8.png](https://i-blog.csdnimg.cn/blog_migrate/f31e96bcbbd5a0368072c644a161cc23.jpeg)
#2 删除
![817200f12a1f1c016309eb473347f062.png](https://i-blog.csdnimg.cn/blog_migrate/e461e9a8fdd26cc05052ec7e30874b3f.png)
#3 查询与修改
![510d7302212bbb8ae815da56f93e9f0c.png](https://i-blog.csdnimg.cn/blog_migrate/895ae505f4e6f76b9df37bd0bd276a74.jpeg)
1.3.4 容器类型4 集合Sets { '☺', 'o(╥﹏╥)o'}
集合中不包括重复的元素,而列表中可存在重复的元素
- 集合的定义:
![4e864bdf998599ab97e5fc760f8ccc4b.png](https://i-blog.csdnimg.cn/blog_migrate/b966f8c4131655e7681bafb2010ccbbe.png)
- 集合的操作:
# 1 增加
![65293c12a49d9c9718bb8c6084959a56.png](https://i-blog.csdnimg.cn/blog_migrate/ab578e879f8b695abf93112d44f06492.jpeg)
# 2 查找 返回的是 bool 值True or False
![8bd1a63c2631b3fe66e41967aaf83798.png](https://i-blog.csdnimg.cn/blog_migrate/048b4e97deea2ae29ce137aab2c890af.jpeg)
# 3 删除
![221919193bea54e1b91c7ce00ac81d76.png](https://i-blog.csdnimg.cn/blog_migrate/434163589f47384a4f62acc721f1cbaa.jpeg)
# 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
条件判断
![b38f62b43b3d6af03e0ec0cdddc3d74c.png](https://i-blog.csdnimg.cn/blog_migrate/923a57101ec808085b7a03a05e07df93.jpeg)
多条件判断
![401bc855d188a4b86949b03540f471e4.png](https://i-blog.csdnimg.cn/blog_migrate/95c9f9a6d971b535e5d27530b03b8cbe.jpeg)
3、循环:批量处理数据
对容器内的每一个数据,按照特定的规则进行重复处理
代码块:
- for i in 容器:
- (缩进) 要执行的动作
#3.1 元组的循环
for i in List( )
![70c39948149c3d02f2babfb0bdc96fca.png](https://i-blog.csdnimg.cn/blog_migrate/a2fab4e244f36195ced2013319882d4f.jpeg)
#3.2 字典的循环
for key, value in Dic.item()
![d6f51396763b0a997a39d621f9d26a35.png](https://i-blog.csdnimg.cn/blog_migrate/5124b0bcd9928988d9f64ad562fd3e50.jpeg)
#continue:用于跳出当前循环
![93a0acd95ee986617b12fe65c2db5813.png](https://i-blog.csdnimg.cn/blog_migrate/adcfbc6c20ad7651545dedff175697a5.jpeg)
#break:用于跳出当前循环
![96dd5818f216ba55573dc1ea8a7b2de3.png](https://i-blog.csdnimg.cn/blog_migrate/6c16bfc16a2ede527490e9deafd30d52.jpeg)
Tips:注意 break 的位置对输出结果的影响,break后的语句不再执行(如下图),所以查询结果满足条件要求时要将 满足该条件后的执行代码 放置break 前。
![e534edd2815495451571c8b8e690daad.png](https://i-blog.csdnimg.cn/blog_migrate/bc8736b91d43b5eeb991ed37342dda0f.jpeg)
4、函数
函数是对输入进行特定计算并输出的过程
- def 函数名称(参数1,参数2): 输入
- 函数体 函数
- return 输出
#函数的定义与使用
![da60c8d3d4377927d3d2df7b429ab535.png](https://i-blog.csdnimg.cn/blog_migrate/72f3afd4ef97ceaa7c1afb6ad0338657.jpeg)
错误师范:
- 注意,函数运算输出时,实际输出的结果是函数本身,而不是函数里定义的公式,在下图中,如果print( )里写的是 z ,是无法计算结果的,应该是要写之前定义的 time(x,y)
![4286629259dc79c6651f2e5f29a21631.png](https://i-blog.csdnimg.cn/blog_migrate/07642123dd975155c248deb981ff4a82.jpeg)
注意函数参数的可变属性:
在函数中,参数能否变化,会影响数据传递后的结果
- 在参数为不可变类型时,传递无法改变数据值,仅相当于复制
- 而可变数据中,传递的是变量的引用地址
函数按数据的可变属性分为:
- 不可变数据类型:字符串,元组,数值
- 可变数据类型:列表等
4、模块
模块的使用
- import 包名称
- import 包名称 as 别名
- from 包名称 import 函数名
# 使用python内置模
# 使用第三方包
![8c77dad87d2708371d2315f423d1bf6b.png](https://i-blog.csdnimg.cn/blog_migrate/1860e2c6ec9af0e08a5ba25c4829789c.jpeg)
5、数据结构
collections 的三种类型:
- queue :双向链表:
- 队列——先进先出
![df418de084055c7a6f9e38c9fca2af2f.png](https://i-blog.csdnimg.cn/blog_migrate/4c24374f274edd8dcceb23fb0c3634c9.jpeg)
- 栈——后进先出
![885c04dff968adf4ce9bcabebfd3f683.png](https://i-blog.csdnimg.cn/blog_migrate/e295bd8dd4f44a5c2fb010d832baefd3.jpeg)
![885c04dff968adf4ce9bcabebfd3f683.png](https://i-blog.csdnimg.cn/blog_migrate/e295bd8dd4f44a5c2fb010d832baefd3.jpeg)
- orderdDict:排序字典
![08185a725232ae407fe1d3ef11a38e20.png](https://i-blog.csdnimg.cn/blog_migrate/8530f97926ae39cb8b26ca6459ecc52a.png)
- Counter:计数器
![c34b40aa5eaec145ffa8a0a9fec304f1.png](https://i-blog.csdnimg.cn/blog_migrate/5760b0a5245148e2928c4cd7451becbe.jpeg)