总算能坚持利用下班的时间好好学习了。锻炼也没落下。

之前学了R语言,这次学python。感觉又回到了学C语言那会。

py很久之前就知道它的强大,但一直没学,不知道怎么使用,学了也不知做啥。

平时喜欢玩一些服务器,对于命令输入,习惯码代码稍微可以快点。

#安装Anaconda并创建python环境

主要是Anaconda介绍,如何安装Anaconda,包基本操作,管理环境基本操作。

这一部分,跟服务器自己配置安装LNMP环境,并安装一些程序的操作大相径庭。

初学python者自学anaconda的正确姿势是什么??​www.zhihu.com图标

#安装jupyter notebook

有关jupyter notebook介绍,安装jupyter notebook,快速上手notebook。notebook功能强大需要慢慢摸索,在之后的码代码中,反复查看该教程,才基本掌握其功能。

jupyter notebook 可以做哪些事情?​www.zhihu.com图标

python四个关键点

#数据(程序运行原材料)

>字符串(String)

用”或者””创建,用+号把两个字符串合并,用%s格式化字符串。

>数字(Number)

整数型,整数。浮点型,小数。复数型,实数部分与虚数部分。

>容器

1.列表(List)

使用[],从0开始,使用len查找有几个数值。增加(append),删除(del),按下标查找,用=号重新赋值进行修改。

2.元祖 (Tuple)

使用(),只能查询,不能修改。

3.集合(Sets)

使用{},无重复元素,自动删除重复元素。增加(update),删除(discard),查询(in)。

4.字典 (Dictionary)

使用{},键(key)值(value)对,映射关系。key的值必须是唯一的(数字,字符串,元祖)。增加,新建key值,删除(del),查询按key值,直接赋值。

>布尔(判断条件,Ture和Flase大小写需注意)

>None

空值。用于识别出空值,可进行相应处理。

不可变对象:字符串 数字 元祖

可变对象:容器 布尔 None 列表 集合 字典

#条件判断

原来于现实生活。

if  边界条件:
      要做的事情1
else:
     要做的事情2

边界条件:

1.值比较

>(大于) <(小于) >=(大于等于) <=(小于等于) !=(不等于) ==(等于)

#《摔跤吧,爸爸》豆瓣评分
scoreNum=9.1
if scoreNum >=8 :
    print('我要去看这部电影')
else:
    print('电影太烂,不去看了')

我要去看这部电影

2.逻辑比较

and(并且) or(或者) not(不是)

#定义列表:病人姓名
nameList=['猴子','马云','王健林','马化腾']
if '猴子' not in nameList:
    print('列表中没有叫猴子的病人')
else:
    print('列表中有个叫猴子的病人')

列表中有个叫猴子的病人

>多个条件判断

if  边界条件1:
      要做的事情1
elif 边界条件2:
      要做的事情2
else:
     要做的事情3

#循环

批量处理数据

把容器中的每一个数据都按照特点的规则进行重复处理。

for循坏

for  i  in 容器:
     要做的事情

例:

gafataDict={'谷歌':'Goog','亚马逊':'aMZN','Facebook':'FB',
            '苹果':'aapl','阿里巴巴':'BABA','腾讯':'0700'}
#将股票代码全部大写
for key,value in gafataDict.items(): 
    #对股票代码转换成大写
    newValue=value.upper()
    #将转换后新的股票代码赋值给对应的key
    gafataDict[key]=newValue

print(gafataDict)

{‘谷歌’: ‘GOOG’, ‘亚马逊’: ‘AMZN’, ‘Facebook’: ‘FB’, ‘苹果’: ‘AAPL’, ‘阿里巴巴’: ‘BABA’, ‘腾讯’: ‘0700’}

continue 用于跳出当前循环

break 用于退出整个循环,用于满足某个条件,不在循环。

#函数

用于实现某个特定功能,可重复使用的代码块。

1.具备某个功能,方便使用函数的人实现特定功能

2.输入端,接收调用端使用数据,

3.输出端,返回给使用人。

1.自定义函数

自定义函数模板如下:

def  函数名称(参数1,参数2):
       函数体
      return 输出

一一对应赋值:

def add(x,y):
    z=x+y
    return z
#使用函数
a=1
b=2
c=add(a,b)
print('1和2相加等于',c)

1和2相加等于 3

带参数名对应

def add(x,y):
    z=x+y
    return z
#使用函数
a=1
b=2
c=add(x=a,y=b)
print('1和2相加等于',c)

1和2相加等于 3

2.函数参数:不可变数据类型

参数为不可变数据类型(字符串,元祖,数值):传递只是该数据类型的值(相当于复制一份)

#定义函:改变数据的值
def changeInt(a):
    a=a+1
b=1
print('调用函数之前b的值=',b)
changeInt(a=b)    
print('调用函数之后b的值=',b)

调用函数之前b的值= 1
调用函数之后b的值= 1

3.函数参数:可变数据类型

def changeList(inputList):
    inputList.append('奶茶妹妹')

'''
使用函数
参数是可变数据类型:
传递的是该变量的引用地址
'''
nameList=['马云','刘强东']
print('调用函数之前的值:',nameList)
changeList(inputList=nameList)    
print('调用函数之后的值:',nameList)

调用函数之前的值: [‘马云’, ‘刘强东’]
调用函数之后的值: [‘马云’, ‘刘强东’, ‘奶茶妹妹’]

4.变量作用域

全局作用域(函数外),程序全局均可使用。

局部作用域(函数内),申明函数内使用。

”’

插一句题外话:猴子的鸡汤真得熬得足够浓。

”’

#模块

模块是包含定义的变量、类和函数的文件,可以引用模板使用其功能。

内置模板(会使用到代码自动补全功能)和引入第三方包

包的组织结构(.py为模块,用文件夹组织模板形成包,同名可避免冲突)

方法如下:

import 包名称

import 包名称 as 别名

from 包名称 import 函数名

例:

import pandas as pd 
fileNameStr='C:\\Users\\Administrator\\第2关零基础掌握人工智能核心语言Python\\数据\\病历数据.xlsx'
xl = pd.ExcelFile(fileNameStr)
patientDf = xl.parse('Sheet1')
print(patientDf)

病人编号 姓名 年龄 糖尿病类型 病情
0 1 猴子 29 1型糖尿病 较差
1 2 马云 34 2型糖尿病 好转
2 3 王健林 28 1型糖尿病 显著好转
3 4 马化腾 52 2型糖尿病 较差

#数据结构

熟练数据结构,提高效率。

双向链表queue:队列,栈

排序字典:OrderedDict

计数器:Counter

1.队列,以吃饭排队,排队拿号理解。

#导入collections包
from collections import deque
#定义队列:排队吃饭人的编号
queue=deque(['001','002','003','004','005'])
#入队:在队列尾部插入元素
queue.append('006')
print(queue)

deque([‘001’, ‘002’, ‘003’, ‘004’, ‘005’, ‘006’])

#出队:在队列头部删除元素
queue.popleft()

‘001’

print(queue)

deque([‘002’, ‘003’, ‘004’, ‘005’, ‘006’])

2.栈,以浏览器浏览,后退,前进理解。

from collections import deque
#定义栈:浏览我个人知乎主页的顺序
stack=deque(['知乎动态','知乎回答','知乎文章'])
print(stack)

deque([‘知乎动态’, ‘知乎回答’, ‘知乎文章’])

#入栈:在栈顶加入元素
stack.append('知乎专栏')
print(stack)

deque([‘知乎动态’, ‘知乎回答’, ‘知乎文章’, ‘知乎专栏’])

#出栈:将栈顶元素移除
stack.pop()

‘知乎专栏’

print(stack)

deque([‘知乎动态’, ‘知乎回答’, ‘知乎文章’])

3.排序字典

作为初级强迫症,还是喜欢Collection中的排序字典

'''
OrderedDict:按照插入key的顺序,对字典排序
'''
from collections import OrderedDict
#定义有序字典
gafataOdDict=OrderedDict({'谷歌':'GOOG','亚马逊':'AMZN','Facebook':'FB',
            '苹果':'AAPL','阿里巴巴':'BABA','腾讯':'0700'})
gafataOdDict

OrderedDict([(‘谷歌’, ‘GOOG’),
(‘亚马逊’, ‘AMZN’),
(‘Facebook’, ‘FB’),
(‘苹果’, ‘AAPL’),
(‘阿里巴巴’, ‘BABA’),
(‘腾讯’, ‘0700’)])

4.计数器

from collections import Counter
cDict = Counter('有一种鸟是永远也关不住的,因为他们的羽毛太光亮了。羽毛太光亮')
cDict['亮']

2

#出现次数最多的3个词
cDict.most_common(3)

[(‘的’, 2), (‘羽’, 2), (‘毛’, 2)]

”’

再插一句题外话:猝不及防的鸡汤。

”’

感觉今后要学的英语,要记的函数,会毛毛多。

上课期间还是出现了很多错误。有之前折腾服务器的经验,看错误log已经是习惯。再搜索寻找解决办法。还有分析一本书。

最近也看到有大神专门做了土木工程与py的专题。

Python数据采集处理分析挖掘可视化应用实例​zhuanlan.zhihu.com图标

很详实,很简单粗暴,呀哈哈哈,我喜欢。作为曾经土木狗的一员,表示推荐。