初学python和机械学习的那些坐牢史

一. 六大数据类型

number:数字(其中还有整型(int),浮点型(float),布尔型(bool,这玩意不会用)三种数值类型)

string:字符串

list:列表

tuple:元组

dictionary:字典

set:集合

相互转化:数据类型()就可以转化为你想要的类型

比如:int(a)就将a转化为整数

二.  算数运算符

/:结果为浮点数

//:结果为向下取整

%:结果除后的余数

**:幂运算

三:逻辑运算符

and:“与”运算符,和的意思(与c中的&的意思一样,但是有区别)

or:“或”运算符

not:“非”运算符,意思相反,如果为真就假,如果为假就为真

四:判断语句

if  判断条件:(记得判断条件后有冒号,与c中不一样)

        语句

else:(同样有冒号)
        语句

当然:python中没有switch语句。

五:循环语句

1. while:(记得是冒号,不是c语言中的花括号)

        循环体

2. for 循环变量 in 遍历对象(序列):

        循环体

for 循环,从形式上可以分为俩种:

1.遍历对象

2.使用range函数控制循环次数

range函数: range(起始值,终止值,步长)

步长 :每次循环序列增长值,默认值为1,为1时可以省略

六:字符串

转义字符输出为
、’'
\’‘‘’
\t制表符
\n换行符
\\倒斜杠

七: 字符串

1.字符串的计数包含空格和符号

2.索引从0开始

3.获取单个字符w时可以使用变量名[索引]

4.获取某个字符串使用变量名[起始索引:结束索引+1:间隔个数],起始索引默认为0,结束索引默认为最后,间隔个数默认为1,若为默认时可以省略

5.想要逆序输出字符串,只需要使用变量名[结束索引:开始索引-1:-1]

注意:python中所有的区间都是左开右闭

6.

innot in
判断某个字符或字符串是否在字符串中判断某个字符或字符串是否不在字符串中

输出值可为布尔值,即True 和 False

7.字符串之间用“+”连接

8.

方法使用方法作用
upper()字符串.upper()将字符串里的字符全部大写
lower()字符串.lower()将字符串里的字符全部小写
isupper()字符串.isupper()字符串中字符是否都是由大写字母组成
islower()字符串.islower()字符串中字符是否都是由小写字母组成
isdigit()字符串.isdigit()字符串中是否都是由数字组成
isnumeric()字符串.isnumeric()字符串中字符是否都是由数字字符组成
isalpha()字符串.isalpha()字符串中是否都是由字母组成,并且非空
isalnum()字符串.isalnum()字符串中是否都是由字母和数字组成,并且非空
isdecimal()字符串.isdecimal()字符串中是否都是由数字字符组成,并且非空
isspace()字符串.isspace()字符串中是否都是由空格、制表符和换行符组成,并且非空
istitle()字符串.istitle()字符串中是否以大写字母开头、后面都是小写字母的单词、数字或空格
find()字符串.find(字符,起始位置,结束位置)查找指定字符在字符串中的位置(索引)(找不到则返回-1)
index()字符串.index(字符,起始位置,结束位置)查找指定字符在字符串中的位置(索引)(找不到会报错)
count()字符串.count(字符)统计指定字符出现的次数
replace()字符串.replace(字符,新字符,替换次数)用于字符串的修改
split()字符串.split(分隔符,分割次数)拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。
join()分隔符.join(序列)返回一个用分隔符连接序列各个元素后的字符串(注:分隔符可以为空)
title()字符串.title()字符串内的所有单词的首字母大写
capittalize()字符串.capittalize()字符串第一个字母大写
startswith()字符串1.startswith(字符串2)字符串2是否以字符串开始
endswith()字符串1.endswith(字符串2)字符串2是否以字符串结束
partition()字符串.partition(字符串中片段)以字符串中片段为分隔符分隔字符串
rjust()字符串.rjust(数字,'填充字符')右对齐字符串,左边填充上‘填充字符’,总字符长度为‘数字’
ljust()字符串.ljust(数字,'填充字符')左对齐字符串,右边填充上‘填充字符’,总字符长度为‘数字’
center()字符串.center(数字,'填充字符')字符串居中,两边填充上‘填充字符’,总字符长度为‘数字’
strip()字符串.strip(空格、制表符、换行符和字符串参数)删除字符串两边所选字符
rstrip()字符串.rstrip(空格、制表符、换行符和字符串参数)删除字符串右边所选字符
lstrip()字符串.lstrip(空格、制表符、换行符和字符串参数)删除字符串左边所选字符

八.列表

1.

列表操作示范
创建一个空列表a = [ ]
访问列表中的某个元素a[索引]
访问列表的最后一个元素a[-1]

2.

操作方法描述
列表.append(元素)在列表末尾添加一个元素
列表.extend(序列)在列表末尾追加一个序列
列表.insert(索引,元素)在列表对应的索引插入元素
del 列表[索引]删除列表中对应索引的元素
列表.pop(索引)删除列表中对应索引的元素,并返回删除的元素,默认最后一个
列表.remove(元素)删除列表中对应元素的第一个匹配项
列表.clear()清空列表
列表[索引]=新元素将列表对应索引的元素,修改为新元素
列表.index(元素)返回元素对应的索引

3.

len()函数可以取得列表的长度

4.用“+”连接两个列表,“ * ”实现列表的复制

5.sum()函数可以将列表中所有数相加

6.

sort():可以对列表进行永久排序

列表.sort(reverse=True/False)

sorted()可以对列表进行临时排序

sorted(列表名,reverse=True/False)

reverse=True 时,按降序排序。

reverse=False 时,按升序排序。

九.元组

1.

列表操作示范
创建一个空元组a =()
创建包含一个元素的元组b =(元素,
创建元组c =(元素1,元素2,……)

注意:包含一个元素的元组必须有逗号

2.

获取一个元素元组序列[所有]
获取多个连接的元素元组序列[开始索引,结束索引]

3.

操作作用
index()从元组中找出某个对象第一个匹配项的下标位置。
count()统计某个元素在元组中出现的次数
len()计数元组元素的个数,并返回值
max()返回元组中元素的最大值
min()返回元组中元素的最小值

十.字典

1.

字典操作代码示范
创建空字典dict1 = {}/dict2 = dict()
创建字典dict3 = { 键1 :值1 ,键2: 值2,……}

2.

操作代码示范描述
访问值字典序列[键]访问已知键所对应的值
修改值字典序列[键]=新值修改已知键的值
添加键值对字典序列[新键]=新值添加新的键值对
del 字典序列[键]删除字典中对应的键的键值对
del 字典序列删除字典
字典序列.clear()清空字典
字典序列.items()查找字典的所有的键值对
字典序列.keys()查找字典的所有的key(键)
字典序列.values()查找字典的所有的value(值)

十一.集合

操作代码示范描述
集合序列.add(数据)添加一个数据
集合序列.update(序列数据)添加序列
集合序列.remove(数据)删除集合中指定的数据,如果数据不存在就报错
集合序列.pop()随机删除集合中的某个数据
集合序列.discard(数据)删除集合中指定的数据,如果数据不存在不做任何操作

十二.函数

1.def 函数名 ():

        函数语句

函数名()

2.参数

(1)位置参数

def 函数名(形参1,形参2):
    函数体
函数名(实参1,实参2)

(2)默认参数

def 函数名(形参1=数据,…):
    函数体

(3)不定长参数(*args)

def 函数名(*args):
    函数体
函数名(实参1,实参2,实参3,……)

(4)不定长参数(kwargs)

def 函数名(kwargs):
    函数体

3.

globalnonlocal
声明变量的作用域为全局作用域数中的下划线关键字用来在函数中使用外层(非全局)变量

一.机械学习

一.常用工具如下:

工具作用
matplotlib画图工具
numpy表格处理工具
padas信息处理工具

二. matplotlib

1.安装

打开cmd,输入代码:pip install matplotlib

输入代码检查是否安装成功:pip list

2.导入库

import matplotlib.pyplot  as plt

3.创建画布

plt.figure(figsize = (a,b),dip = )   

figsize:图像长(a)和宽(b)

dpi:清晰度 

4.绘制图像

plt.plot(x,y.color = ' ',linestyle = ' ',marker = ' ',linestyle = ' ',label = ' ')

x:横轴

y:纵轴

marker:标记风格

linestyle:线条格式

label:图例

(1)常用的color

颜色说明颜色说明
r红色g绿色
b蓝色w白色
c青色m洋红
y黄色k黑色

(2)标记风格

标记字符说明标记字符说明
'.'点标记','像素标记(极小点)
'v'倒三角标记’^‘上三角标记
'>'右三角标记'<'左三角标记
'1'下花三角标记'2'上花三角标记
'3'左花三角标记'4'右花三角标记
'o'实心圈标记's'实心方形标记
'p'实心五角标记'*'星形标记
'h'竖六边形标记'H'横六边形标记
'+'十字标记'x'x标记
'D'菱形标记'd'瘦菱形标记

(3)线条格式

样式说明
’-‘实线
’--‘虚线
’-.‘点划线
':'点虚线

5.添加x,y刻度

plt.xticks(x,rotation=,fontsize=)

plt.tticks(y,retation=,fontsize=)

x:要显示的刻度值

y:要显示的刻度值

rotation:旋转角度

fontsize:字体大小 

6.设置x,y标签和标题

plt.xlabel(,fontsize=)

plt.ylabel(,fontsize=)

plt.title(,fontsize=)

7.添加网格显示

plt.grid(Ture,linestyle=,alpha=)

alpha:透明度

8.设置图例

plt.legend(loc=)

loc:图例位置

loc位置表:

位置描述对应数字
best最佳位置0
upper right右上方1
upper left左上方2
lower left左下方3
lower right右下方4
right右边5
center left中间左边6
center right中间右边7
lower center下方中间8
upper center上方中间9
center正中心10

9.图像的保存

plt.savefig(path_or_buffer)

path_or_buffer:文件位置

10.图像显示

plt.show()

11.显示中文

plt.rcParams['font.sans-serif'] = ['SimHei+']

12.统计图

(1)折线图:
 

import matplotlib.pyplot as plt
import pandas as pd
file_path = r"D:\230702417 \1\数据集1.csv"
data = pd.read_csv(file_path, parse_dates=["Date"])
data["Death Rate"] = data["Deaths"] / data["Confirmed"]
plt.figure(figsize=(10, 5))
plt.plot(data["Date"], data["Death Rate"], color="orange", marker="o", label="每日死亡率")
plt.title("2020年1月22日至2020年7月27日病毒死亡率走势")
plt.xlabel("日期")
plt.ylabel("死亡率")
plt.legend()
plt.show()
plt.rcParams['font.sans-serif'] = ['SimHei']

2.饼图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = {'index': np.arange(1, 10001),
        'count': np.random.randint(0, 10001, size=10000),
        'class': np.random.choice([1, 2, 3, 4, 5], size=10000),
        'normal_distribution': np.random.normal(0, 10000, 10000),
        '0-1': np.random.rand(10000)}
df = pd.DataFrame(data)
df.to_csv(r"D:\230702417 \2_data.csv", index=False)
class_counts = df['class'].value_counts()#计算class出现的次数
plt.figure(figsize=(5, 5))
plt.pie(class_counts, labels='class', autopct='%1.1f%%', startangle=60)
plt.title('class_distribution')
plt.show()

3.柱状图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = {'index': np.arange(1, 10001),
        'count': np.random.randint(0, 10001, size=10000),
        'class': np.random.choice([1, 2, 3, 4, 5], size=10000),
        'normal_distribution': np.random.normal(0, 10000, 10000),
        '0-1': np.random.rand(10000)}
df = pd.DataFrame(data)
df.to_csv(r"D:\230702417 \2_data.csv", index=False)
class_count_sum = df.groupby('class')['count'].sum()#groupby可以允许你按照某列的值对数据进行分组
plt.figure(figsize=(10, 5))
plt.bar(class_count_sum.index, class_count_sum, color='orange')#索引作x轴,另外一个作y轴
plt.xlabel('Class')
plt.ylabel('Count sum')
plt.title('count sum of the class')
for i, v in enumerate(class_count_sum):#循环添加标签,从1开始,水平居中,垂直方式对齐
        plt.text(i+1, v+50, str(v), ha='center', va='bottom')
plt.show()

4.直方图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = {'index': np.arange(1, 10001),
        'count': np.random.randint(0, 10001, size=10000),
        'class': np.random.choice([1, 2, 3, 4, 5], size=10000),
        'normal_distribution': np.random.normal(0, 10000, 10000),
        '0-1': np.random.rand(10000)}
df = pd.DataFrame(data)
df.to_csv(r"D:\230702417 \2_data.csv", index=False)
plt.figure(figsize=(10, 5))#图的宽度和长度
plt.hist(df['normal_distribution'], bins=100)
plt.xlabel('x')
plt.ylabel('y')
plt.title('normal_distribution')
plt.show()

三.numpy

1.安装

打开cmd,输入代码

pip install numpy

2.检查是否成功

pip list

3.导入库

import numpy as np

4.创建ndarray

data = np.array()

5.基本方法

名称作用
data.shape查看数组的维度(以元组的形式输出)
data.ndim查看数组维数
data.size查看数组中的元素数量
data.itemsize查看一个数组元素的长度
data.dtype查看数组元素的类型

6.创建数组时指定类型

名称描述简写
np.bool用一个字节存储的布尔类型(Ture或False)'b'
np.int8一个字节大小,-128至127'i'
np.int16整数,-32768至32767'i2'
np.int32整数,-2^31^至2^31^-1'i4'
np.int64整数,-2^63^至2^63^-1'i8'
np.uint8无符号整数,0至255'u'
np.uint16无符号整数,0至65535'u2'
np.uint32无符号整数,0至2^32^-1'u4'
np.uint64无符号整数,0至2^64^-1'u8'
np.float16半精度浮点数,16位,正负号1位,指数5倍,精度10位'f2'
np.float32半精度浮点数,32位,正负号1位,指数8倍,精度23位'f4'
np.float64半精度浮点数,64位,正负号1位,指数11倍,精度52位'f8'
np.complex64复数,分别用两个32位浮点数表示实部和虚部'c8'
np.complex128复数,分别用两个64位浮点数表示实部和虚部'c16'
np.object_python对象'o'
np.string_字符串's'
np.unicode_unicode类型'U'

7.生成只含0和1的数组

one = np.ones([index, columns])     #生成index行,columns列且所有元素都为1的数组
zero = np.zeros([index, columns])    #生成index行,columns列且所有元素都为0的数组
ones = np.ones_like(ndarray)         #生成一个行数和列数都与ndarry相同的且所有元素均为1的组
zeros = np.zeros_like(ndarray)         #生成一个行数和列数都与ndarry相同的且所有元素均为0的组

8.从现有的数组中生成

data1 = np.array(data)
data2 = np.asarray(data)

np.array和np.asarray

as:

>>>a = np.array([[1,2,3],[4,5,6]])
>array([[1, 2, 3],
        [4, 5, 6]])
>>>a1 = np.array(a)
>>>a2 = np.asarray(a)
>>>a[0][0] = 100
>a1:array([[1,2,3],
            [4,5,6]])
 a2:array([[100,2,3],
            [4,5,6]])

可以看到数组a1使用array进行复制,将a的原始数据拷贝过来,对于数组a中的元素改变,对数组a1的元素没有影响,数组a2使用asarray进行复制,对于数组a中的元素改变,数组a2的元素也跟着数组a中的元素改变而改变。

9.等差数组

(1)np.linspace(start, stop, num, endpoint)     (这种是指定数量的,步长自动计算)

start:起始值

stop:结束值

num:等间隔样例数量,默认50

endpolint:序列中是否包含stop值,默认为true

(2)np.arange(start,stop,step,dtype)         (这种是指定步长,数量自动计算)

step:步长,默认1

10.等比数组

np.logspace(start,stop,num) (生成以10的n次幂的数据)

num:要生成的等比数组数量,默认为50

四.生成随机数组

1.导入库

import random

2.正态分布

(1)np.random.randn(d0,d1,d2,……,dn)

功能:从标准正态分布中返回一个或多个样本值

(2)np.random.normal(loc = 0.0,scale = 1.0,size = None)

loc:float 此概率分布的均值(对应整个分布的中心)

scale:float 此概率分布的标准差(对应于分布的宽度,scale值越大越矮胖,scale值越小越瘦高) size:int or tuple of ints 输出的shape,默认为None,只输出一个值

(3)np.random.standard_normal(size = None)

从一个均匀分布中随机采样,生成一个整数或N维整数数组 取数范围:若high不为None时,取(low,high)之间的随机整数,否则取值[0,low)之间随机整数

3.数组去重

np.unique()

4.ndarrary运算

(1)np.logical_and(condition1,condition2)

condition:条件

当两个条件同时满足时返回Ture

(2)np.all()

所有条件都满足要求返回True,有任一个不满足返回False

(3)np.any()

任一个条件满足要求返回True

5.统计指标

方法作用
np.min(ndarray,axis)查询所有行或所有列的最小值
np.max(ndarray,axis)查询所有行或所有列的最大值
np.median(ndarray,axis)查询所有行或所有列的中位数
np.mean(ndarray,axis)查询所有行或所有列的平均值
np.std(ndarray,axis,dtype)查询所有行或所有列的标准差
np.var(ndarray,axis,dtype)查询所有行或所有列的方差
np.ardmax(ndarray)查询最大值的位置
np.ardmin(ndarray)查询最小值的位置

6.数组运算

ndarray +1:数组里每个元素 +1

ndarray /2:数组里每个元素 /2

ndarray *2:数组里每个元素 *2

7.矩阵乘法

方法作用
np.matmul矩阵与矩阵相乘(禁止出现矩阵与标量相乘)
np.dot矩阵与矩阵和标量相乘皆可

五.pandas

1.

打开cmd,输入代码

pip install pandas

2.导入库

import pandas as pd

3.三种主要数据结构

数据结构

描述
Series一维数据结构
DataFrame二维数据结构
MultiIndex三维数据结构
Panel三维数据结构(MultiIndex老版本)

(1)

pd.Series(data = None,index = None,dtype = None)

data:传入的数据,可以是ndarray,list等

index:索引,必须是唯一的,且与数据的长度相等,如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引

dtype:数据的类型 可以通过字典键值对来实现

属性作用
series.index获取索引
series.values获取值

(2)

pd.DataFrame(data = None,index = None,columns = None)

index:行标签,如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引

columns:列标签,如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引

属性作用
dataframe.shape获取维度
dataframe.index获取行索引表
dataframe.columns获取列索引表
dataframe.values获取其中array的值
dataframe.T行列互换(转置)
dataframe.head()默认获取前5行,其他行数自行添加
dataframe.tail()默认获取后5行,其他行数自行添加
dataframe.info获取每一列的非空元素个数

(2.1)修改行列索引

data.index = new_index
data.columns = new_columns

修改索引值不能单个修改,必须整体修改

(2.2)重设索引

dataframe.reset_index(drop = False)

drop:默认为False,不删除原来索引,如果为True,删除原来索引值

4.排序

(1)dataframe排序

dataframe.sort_values(by = ,ascending =)    

by:指定排序参考的键

ascending:默认升序

ascending = False 降序

ascending = True 升序

(2)series排序

dataframe.sort_values(ascending = True)         

进行值排序

series.sort_index()

进行索引排序

5.统计运算

dataframe.describe()

(1)统计函数:

函数作用
sum获取总和
mean获取平均值
median获取中位数
min获取最小值
max获取最大值
mode获取众数
abs获取绝对值
prod获取累积
std获取标准差
var获取方差
idxmax获取最大值索引
idxmin获取最小值索引

(2)累计统计

函数作用
cumsum计算1/2/3/……/n个数的和
cummax计算1/2/3/……/n个数的最大值
cummin计算1/2/3/……/n个数的最小值
cumprod计算1/2/3/……/n个数的积

(3)自定义运算

apply(func,axis=0)

func:自定义运算

axis=0默认是列,axis=1为行进行运算

6.pandas画图

1.dataframe.plot(kind='line')

kind:str,需要绘制图形的种类

图形种类

种类描述
line折线图
bar条形图(竖直条状)
bath条形图(水平条状)
hist直方图
pie饼图
scatter散点图

2.文件读取与存储

数据类型读取文件存储文件
textCSVread_csvto_csv
textJSONread_jsonto_json
textHTMLread_htmlto_json
textLocal clipboardread_clipboardto_clipboard
binaryMS Excelread_excelto_excel
binaryHDF5 Formatread_hdfto_hdf
binaryFeather Formatread_featherto_feather
binaryParquet Formatread_parquetto_parquet
binaryMsgpackread_msgpackto_msgpack
binaryStataread_statato_stata
binarySASread_sas--
binaryPython Pickle Formatread_pickleto_pickle
SQLSQLread_sqlto_sql
SQLGoogle Big Queryread_gbpto_gbp

3.csv

(1)read_csv

pd.read_csv(filepath_or_buffer,sep = ',',usecols = None)

filepath_or_buffer:文件路径

sep:分隔符,默认用','隔开

usecols:指定读取的列名,列表形式

(2)to_csv

dataframe.to_csv(path_or_buffer=None,sep = ',',columns = None,header = True,index = True,mode = 'w',encoding = None)

path_or_buf:文件路径

sep:分隔符,默认用','隔开

columns:选择需要的列索引

header:是否写进列索引值

index:是否写进行索引值

mode:'w':重写,'a':追加

7.高级数据处理

1.判断数据中是否含NAN

方法

描述
pd.isnull(dataframe) 或dataframe.isnull()有缺失值返回True,没有缺失值返回False
pd.notnull(dataframe)或dataframe.isnull()没有缺失值返回True,有缺失值返回False

2.删除存在缺失值的对象

dataframe.dropna(axis = 0)

3.替换缺失值

dataframe.fillna(value, inplace = True)

value:替换成的值

inplace:True则会修改原数据,False则不替换修改原数据,生成新的对象

4.合并

(1)pd.concat([data1, data2], axis = 1)

按照行或列进行合并,axis=0为扩展行,axis=1为扩展列

(2)pd.merge(left, right, how = 'inner', on = None)

可以指定按照两组数据的共同键值对合并或者左右各自合并

left : dataframe

ight :另一个dataframe

on :指定的共同键

how:按照什么方式连接

(3)方式

方式作用描述
left左连接左边加左右交集的部分
right右连接右边加左右交集的部分
outer外连接并集部分
inner内连接交集部分

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值