目录
一、基本知识
1、中文编码要在头加上注释:(可以指定源码文件的编码格式)
#coding:gbk
2、#算符运算符:加+,减-,乘*,除/,整除//,取余%,幂运算**(例如11//5=5。向下取整。再例:-9//-4= 2, -9//4=-3)
9%4=1 .一正一负时用公式:余数 = 被除数 – 除数 * (整除后的)商。如:9%-4=9-(-4)*(-3)=-3
3、内置函数range():不管range对象标识的整数序列有多长,所有range对象占用的内存空间都是相同的。语法:range(start,stop,step)
In与 not in判断整数序列中是否存在(不存在)指定的整数。
4、for in循环:例 for item in ‘python’: print(item) 则依次输出p y t h o n (将p取出赋值给item)
再例for I in range(10): print(i) 则依次输出1 2 3 …9 .因为range()产生一个整数序列,是一个可迭代对象。
如果在循环中不需要用到自定义变量,可将自定义变量写为 _
例 for _ in range(5) :print(1) 则输出5次1
5、else(没有碰到break执行else) 可以与for循环、while循环搭配,循环正常结束,没有走break的时候,就走else语句。
二、列表
1、列表是根据需要动态分配和回收内存,可以任意数据类型混存。
其索引有两种,第一种是像数组一样0,1,2…,第二种是从最后一个元素开始,为-1,倒二为-2…
2、获取列表中指定元素的索引:index(),如果列表中有多个,仅返回第一个,可以在指定的start 和stop 之间查找。
例如:print( lst.index(‘hello’) ) 或者print( lst.index(‘hello’,1,3) ) #代表从1开始找,到2结束,(不包括3)
3、列表切片操作: 语法: 列表名[start : stop : step ]
切片的结果是原列表片段的拷贝,拷给一个新的列表,也即两个列表不是同一个id
切片的范围[start , stop)
Step为正数时:start默认是第一个元素,从start往后计算切片
Step为负数时:start默认是最后一个元素,从start往前计算切片
例:原list为[1,2,3,4,5] 那么print(list[::-1]) 结果为[5,4,3,2,1]
4、列表元素的添加操作:append():在列表的末尾添加一个元素
extend()在列表的末尾至少添加一个元素 list.extend(list2) 可以将列表2追加到列表末尾
insert()在列表的任意位置添加一个元素;list.insert(1,90) 在 索引为1的位置插入90
切片 在列表的任意位置添加至少一个元素 list[1:]=list3 则在1之后,也即索引2开始往后都是list3里面的内容,即list3覆盖原list的1之后的所有
5、列表元素的移除操作:remove(想要删的元素)一次删除一个元素,重复元素只删第一个
lst=[12,98,932,2]
print(lst)
lst.remove(932) #移除932那个元素
for i in range(3): #for循环
print(lst[i])
Pop(索引)删除一个指定位置上的元素 ,不指定索引,删除列表中最后一个元素
切片:至少删除一个元素,将产生一个新的列表对象,也即原列表没发生改变
例list[1,2,3,4] new_list =list[1:3] 则new_list 为[2,3]
切法2:不产生新列表,而是用空列表将原来想要删除的位置替代
例:list[1:3]=[] 则list为[1,4]
Clear()清空列表,但是列表还在,只是为空 例 list.clear()
Del 删除列表,列表最后不存在了 例 del list
6、lst.sort() print(lst) 默认升序 在原列表基础上排序,没产生新列表
想降序:lst.sort( reverse = False) print (lst)
或者:使用内置函数sorted()对列表进行排序,将产生一个新的列表对象
New_list = sorted(lst) #默认升序 new_lst =sorted(lst, reverse = Ture) #打印出来则降序
7、列表生成式 [i for i in range(1,10) ] 输出结果为[1,2 …9]
lst = [i*i for i in range(1,10) ] 输出结果为[1,4 …81]#也最前面的位置加入列表元素表达式
列表的函数举例后续
lst = [1, 2, 4, 3, 6]
# append函数
print(' 以下是append函数 ')
print(lst)
lst.append(5) # 在列表后面直接加一个元素
print(lst)
# sort函数
print(' 以下是sort函数 ')
lst.sort() # 默认升序(一般符号后面要空一个位置,逗号、注释的#符号都是如此)
print(lst)
lst.sort(reverse=False) # 升序
print(lst)
lst.sort(reverse=True) # 降序
print(lst)
# remove函数
print(' 以下是remove函数 ')
lst.remove(6) # 将括号内的元素从列表内移除
print(lst)
# extend函数 在原列表后面加入批量元素
print(' 以下是extend函数 ')
list2 = [7, 8, 9]
lst.extend(list2)
print(lst)
# insert函数 在哪个位置插入什么元素
print(' 以下是insert函数 ')
lst.insert(1, 10) # 在第一个位置插入10,从0开始数
print(lst)
# 切片:产生一个新的列表,原列表没有改变
print(' 以下是切片 ')
new_list2 = lst[0: 6]
print(new_list2)
new_list = lst[1: 3] # 范围:[1,3) 从0开始数
print(new_list)
# 还可以以切片的方式删除部分内容:
lst[3: 5] = []
print(lst)
# pop函数 没有默认参数则默认删除最后一个
print(' 以下是pop函数 ')
lst.pop(6) # 删除索引为8的元素,与remove的区别是 remove指啥删啥(删指定元素),pop指哪删哪(删指定下标)
print(lst)
lst.sort(reverse=True) # 降序
print(lst)
# clear函数 清空列表 ,也即列表变为空列表 而 del则删除整个列表,不存在这个变量了。
运行结果:
三、机器学习
泰坦尼克号生还者预测练习
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
data = pd.read_csv('titanic_data.csv') # 读取csv数据
# 用pandas的drop函数删掉id整列、axis表示删除整列、在原数据上修改
data.drop('PassengerId', axis=1, inplace=True)
# “data.loc标签索引” , 后面的‘Sex’为名称索引
# 意思是将‘Sex’的True(是male的)改str为1,将是female是True的行,‘Sex’列的str改为0
data.loc[data['Sex'] == 'male', 'Sex'] = 1
data.loc[data['Sex'] == 'female', 'Sex'] = 0
# 用均值来填充缺失值
data.fillna(data['Age'].mean(), inplace=True)
Dtc = DecisionTreeClassifier(max_depth=5, random_state=8) # 构建决策树模型
# data.iloc[]位置索引
Dtc.fit(data.iloc[:, 1:], data['Survived']) # 模型训练
pre = Dtc.predict(data.iloc[:, 1:]) # 模型预测
print(data)
print(pre) # 其显示结果为是否生还的布尔值
# 判断准确率:import 那里输入class、文件中比较
# 判断预测结果方法1:
print(pre == data['Survived']) # 比较模型预测值与样本实际值是否一致
# 判断预测结果方法2:
rst = classification_report(data['Survived'], pre) # 模型分类报告
print(rst)
# 未生还样本预测 准确率84%、召回率88%、F1系数为0.86、共有549个未生还者。。。