目录

目录

第一章:入学指南及其杂项

.ipynb 文件如何打开

python库安装工具

第二章:python科学计算库numpy

第三章:python数据分析处理库—Pandas



第一章:入学指南及其杂项

在校生更偏重底层算法推导,而不仅仅是会用。

自己做笔记很重要,要用自己的话说,用自己的话写,用别人的容易忘。

最好的资源站点 GitHub,kaggle(找数据的,竞赛网站)。

案例积累很重要,因为实际接手项目时,都不是从头开始做的,都是在之前做过的案例或者学过的案例中找相似的地方套进去。

.ipynb 文件如何打开

在安装好Anaconda之后,

1、打开开始菜单找到Anaconda3(64-bit)。

2、点击Anaconda Prompt(类似windows的命令行工具)。

3、找到你存放ipynb文件,小编这里是D盘。输入 d:

4、进入存放ipynb文件的目录。输入 cd 目录名

5、查看ipynb目录。输入dir (list命令也可以)

6、输入命令 jupyter lab 将在该目标下启动Jupyterlab。

.ipynb 文件如何打开(二)

一、找到安装jupyter Notebook的本地文件夹

二、右键--属性--目标--复制目标中的内容至文档

三、将目标内容最后的%USERPROFILE%改为%1--保存为.bat文件

四、将.ipynb文件的打开方式改为上面保存的.bat文件

五、双击即可在Jupyter Notebook中打开本文档

python库安装工具

  1. 打开jupyter prompt 输入conda list  查看已安装的库
  2. pip install +包名
  3. 如果2不成功,进入Window_python包安装页面
  4. ctrl+F找到要安装的包,点击进入下载
  5. 弹出页面中选中下载位置,下载到canda的环境中。(或者下到任何位置,因为pip已经配好了环境变量)
  6. 如果2步骤不成功并显示socket.timeout: The read operation timed out错误,一般是由于网速不稳定,下载过慢,超出默认时间,所以只要修改一下响应时间就好了。
  7. windows下输入 pip --default-timeout=100 install 包名
    linux下输入 pip --default-timeout=100 install -U 包名
  8. 如果步骤7还是不顶用,可以包源镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名。例如:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple superset

第二章:python科学计算库numpy

结构化数据(表格)在算法中运算都是以矩阵的形式。Numpy是做底层运算的,pandas是建立的Numpy基础之上的。

import Numpy as nparray = [1,2,3,4,5]
array + 1             #将会报错,不能加。array = np.array([1,2,3,4,5])
print (type(array))  #<class 'numpy.ndarray'>
array2 = array + 1
array2               # array([2, 3, 4, 5, 6])array2 * array       #array([ 3, 5, 7, 9, 11])tang_list = [1,2,3,4,5]
tang_list.shape      #报错,没有用到工具包
np.array([[1,2,3],[4,5,6]])  #array([[1, 2, 3], [4, 5, 6]])
array.shape          #(2,3)两行,三列。

对于nparray结构来说,里面所有的元素必须是同一类型的 如果不是的话,会自动的向下进行转换

import Numpy as nptang_list = [1,2,3,4,5.1]
tang_array = np.array(tang_list)
tang_array                           #array([1. , 2. , 3. , 4. , 5.1])

nparray基本属性操作

import Numpy as nptype(tang_array)   #numpy.ndarray
tang_array.dtype   #dtype('int32')
tang_array.itemsize   #4
tang_array.ndim       #数据的维度  1tang_array.fill(0)
tang_array            #array([0, 0, 0, 0, 0])

索引与切片:跟Python都是一样的 还是从0开始的

import Numpy as nptang_array = np.array([[1,2,3],[4,5,6],[7,8,9]])
tang_array.shape       #(3, 3)
tang_array.ndim        #2
tang_array[1,1]        #5tang_array[:,1]        #   取所有样本第二列tang_array2 = tang_array    #索引共享
tang_array2 = tang_array.copy()      #拷贝一份

Boolean类型索引

import Numpy as nptang_array = np.arange(0,100,10)       #array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
mask = np.array([0,0,0,1,1,1,0,0,1,1],dtype=bool)   #array([False, False, False,  True,  True,  True, False, False,  True,  True], dtype=bool)
tang_array[mask]  #array([30, 40, 50, 80, 90])random_array = np.random.rand(10)  #array([ 0.51388374,  0.57986996,  0.05474169,0.5019837 ,  0.82705166, 0.95557716,  0.83348612,  0.32385451,  0.52586287,  0.92505535])
mask = random_array > 0.5      #array([ True,  True, False,  True,  True,  True,  True, False,  True,  True], dtype=bool)
np.where(tang_array > 30)      #返回的是索引数组  (array([3, 4,5,6,7,8,9], dtype=int64),)

type

import Numpy as nptang_array.astype(np.float32) #array([ 1.,  2.,  3.,  4.,  5.], dtype=float32)

数值计算

import Numpy as nptang_array = np.array([[1,2,3],[4,5,6]])
np.sum(tang_array)        #左上角加到右下角np.sum(tang_array,axis=0)  #指定要进行的操作是沿着什么轴(维度)array([5, 7, 9])
tang_array.prod()          #左上角乘到右下角
tang_array.prod(axis = 0)       #array([ 4, 10, 18])tang_array.argmin()              #找最小值索引tang_array.std()                #求标准差
tang_array.var()                #求方差tang_array.clip(2,4)          #截断操作   array([[2, 2, 3], [4, 4, 4]])
tang_array.round()            #精确到小数点后一位的四舍五入

排序

import numpy as nptang_array = np.array([[1.5,1.3,7.5],[5.6,7.8,1.2]])np.sort(tang_array,axis = 0)
np.argsort(tang_array)         #array([[1, 0, 2],[2, 0, 1]], dtype=int64)tang_array = np.linspace(0,10,10)   #从0开始到10结束,10个数。
values = np.array([2.5,6.5,9.5])
np.searchsorted(tang_array,values)       #一个数组插入另外一个,返回索引数组。array([3, 6, 9], dtype=int64)index = np.lexsort([-1*tang_array[:,0],tang_array[:,2]])  #在第一列降序的基础上,第二列升序

数组形状

import numpy as nptang_array = np.arange(10)      #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
tang_array.shape = 2,5          #array([[0, 1, 2, 3, 4],[5, 6, 7, 8, 9]])
tang_array.reshape(1,10)        #array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]) 分清一二维的表示区别tang_array = tang_array[np.newaxis,:]     #加新轴  一个样本十个特征
tang_array = tang_array[:,np.newaxis]
tang_array = tang_array[:,np.newaxis,np.newaxis]   #(10, 1, 1, 1)tang_array = tang_array.squeeze()                  #(10,)  压缩没有数据的维度tang_array.T                                       #矩阵转置a = np.array([[123,456,678],[3214,456,134]])
b = np.array([[1235,3124,432],[43,13,134]])
c = np.concatenate((a,b),axis = 0)                 #横着拼接,往下加a.flatten()                    #array([ 123,  456,  678, 3214,  456,  134])拉长操作

矩阵的生成

import Numpy as npnp.zeros((3,3))     #array([[ 0.,  0.,  0.],[ 0.,  0.,  0.],[ 0.,  0.,  0.]])
np.ones((3,3)) * 8   #array([[ 8.,  8.,  8.],[ 8.,  8.,  8.],[ 8.,  8.,  8.]])
a = np.empty(6)        #全零
a.fill(1)              #array([ 1.,  1.,  1.,  1.,  1.,  1.])np.zeros_like(tang_array)
np.ones_like(tang_array)     #按照之前的维度构造新的矩阵。

矩阵运算

import Numpy as npx = np.array([5,5])
y = np.array([2,2])np.multiply(x,y)         #array([10, 10])
np.dot(x,y)              #矩阵乘法,一维时候做内积(对应位置相乘相加)

随机模块

import Numpy as npnp.random.rand(3,2)   #array([[ 0.87876027,  0.98090867],[ 0.07482644,  0.08780685],[ 0.6974858 ,  0.35695858]])#返回的是随机的整数,左闭右开
np.random.randint(10,size = (5,4))  np.random.randint(0,10,3)      #array([7, 7, 5])  从0开始 到10结束。取三个。mu, sigma = 0,0.1
np.random.normal(mu,sigma,10)     # 指定参数构造高斯分布
np.set_printoptions(precision = 2)       #设置精度#洗牌
tang_array = np.arange(10)
np.random.shuffle(tang_array)        #array([6, 2, 5, 7, 4, 3, 1, 0, 8, 9])#随机种子
np.random.seed(100)                #指定随机种子之后每次随机完结果都是一样的。#seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

读写文件

import numpy as np%%writefile zhang.txt        #magi命令按惯例要写在第一行
1 2 3 4
5 6 7 8 data2 = np.loadtxt('zhang2.txt',delimiter=',',skiprows=1)
print(data2)                   #[6. 7. 8. 9. 0.]  delimiter分隔符   skiprows忽略一行zhang3 = np.array([[1,2,3],[4,5,6]])
np.savetxt('zhang3.txt',zhang3,fmt='%d',delimiter=',')   #保存矩阵到文件,#读写array结构,之前都是txt和CSV的文件
zhang_array = np.array([[1,2,3],[4,5,6]])
np.save('zhang4.npy',zhang_array)                  #注意这里的文件后缀npy

第三章:python数据分析处理库—Pandas

import pandas as pddf = pd.read_csv('I:/ITLearningMaterials/TYD/Python_dataAnalyseAndMachineLearning/Chapter3_Pandas_Utils/Pandas_code/titanic_train.csv')
df.head()               #注意斜杠的方向,最好用英文创建文件名。df.info()               #显示列表信息
df.values               #重要,将表格以array形式展现。

创建一个dataFrame结构

import pandas as pd data = {'coutry':['aaa','bbb','ccc'],'population':[243,432,785]}
df_data = pd.DataFrame(data)        

取指定数据

import pandas as pdage = df['Age']

自定义索引

import pandas as pddf = df.set_index('Name')

describe()可以得到数据的基本统计特性  like this

df.describe()

Pandas 索引,用loc(标签)和iloc(位置)定位

import pandas as pd# boolean 做索引
df['Fare']>40                                  #展示所有数据的Boolean值df[df['Fare']>50][:]                           #展示所有为true的数据条
df[df['Sex'] == 'male'][:]                     #展示所有男性
df.loc[df['Sex'] == 'male','Age'].mean()       #计算所有男性的平均年龄

groupBy函数

import pandas as pd
import numpy as np#  求解所有A组中的总和,
df = pd.DataFrame({'key':['A','B','C','A','B','C','A','B','C'],'data':[12,32,2,4,32,213,4,23,54]})for key in ['A','B','C']:                 #常规方法print(key,df[df['key'] == key].sum())   df.groupby('key').sum()                   # 使用groupby函数 更便捷df.groupby('key').aggregate(np.mean)      #按组别计算均值df.groupby('Sex')['Age'].mean()           #统计不同性别的年龄均值

数值计算——二元统计

import pandas as pddf.cov()            #协方差
df.corr()           #相关系数df['Age'].value_counts()        #对年龄相同值计数
df['Age'].value_counts(ascending=True,bins=5)    #升序排列,分成五组

Series 结构的增删改查

import pandas as pd # 构造series
data = [12,43,23]
index = ['a','b','c']
s = pd.Series(index = index,data = data)#查
s.loc['a']
s.iloc[2]#改
s1 = s.copy()
s1[2] = 100#增
s1['j'] = 100#删
del s1['j']

merge操作

import pandas as pd left = pd.DataFrame({'Key1':['K0','K1','K2','K3'],'Key2':['K0','K1','K2','K3'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'Key1':['K0','K1','K2','K3'],'Key2':['K0','K1','K2','K4'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']})
res = pd.merge(left,right,on = ['Key1','Key2'],how = 'outer',indicator = True)  #不写how属性默认内连接,indicator是最后一行 both left_only

显示设置

import pandas as pdzhang = pd.read_csv('I:/ITLearningMaterials/TYD/Python_dataAnalyseAndMachineLearning/Chapter3_Pandas_Utils/Pandas_code/titanic_train.csv')
pd.set_option('display.max_rows',1000)   #展示1000条数据,其他省略号。
pd.set_option('display.max_columns',3)   #同理

pivot 函数

import pandas as pdexample = pd.DataFrame({'Month': ["January", "January", "January", "January", "February", "February", "February", "February", "March", "March", "March", "March"],'Category': ["Transportation", "Grocery", "Household", "Entertainment","Transportation", "Grocery", "Household", "Entertainment","Transportation", "Grocery", "Household", "Entertainment"],'Amount': [74., 235., 175., 100., 115., 240., 225., 125., 90., 260., 200., 120.]})example_pivot = example.pivot(index = 'Category',columns= 'Month',values = 'Amount')  #属性分别代表横标,纵标,数值。df = pd.read_csv('./data/titanic.csv')    #默认就是求平均
df.pivot_table(index = 'Sex',columns='Pclass',values='Fare',aggfunc='count')  #不默认的情况
df.pivot_table(index = 'Sex',columns='Pclass',values='Fare')  #统计不同性别在不同船舱的平均价格df['Underaged'] = df['Age'] <= 18
df.pivot_table(index = 'Underaged',columns='Sex',values='Survived',aggfunc='mean')  #结果见下图

时间操作

import pandas as pd import datetime dt = datetime.datetime(year=2020,month=2,day=7,hour=15,minute=3)  #注意data和date
dt = pd.Timestamp('2020-2-7')             #Timestamp('2017-11-24 00:00:00')
ts.month
ts.day                                    #
td = pd.Timedelta('5 days')               #Timedelta('5 days 00:00:00')
ts + pd.Timedelta('5 days')               s = pd.Series(pd.date_range(start='2020-2-7',periods=10,freq='12H'))  #时间序列,开始时间,十条数据,间隔12小时df = pd.read_csv('I:/ITLearningMaterials/TYD/Python_dataAnalyseAndMachineLearning/Chapter3_Pandas_Utils/Pandas_code/data/flowdata.csv')
df['Time'] = pd.to_datetime(df['Time'])    #将时间列格式标准化
df = df.set_index('Time')                  #将时间列设置为索引列
df = pd.read_csv('I:/ITLearningMaterials/TYD/Python_dataAnalyseAndMachineLearning/Chapter3_Pandas_Utils/Pandas_code/data/flowdata.csv',index_col=0,parse_dates=True)    #读取的同时将时间列设置为索引列data[data.index.month == 1]         #取所有一月份的数据
data.resample('D').mean().head()       #按天进行重采样,每天取均值,同理可以对三天重采样,按月等等

常用操作

import pandas as pddata = pd.DataFrame({'group':['a','a','a','b','b','b','c','c','c'],'data':[4,3,2,1,12,3,4,5,7]})
data.sort_values(by=['group','data'],ascending=[False,True],inplace=True) #在group降序的基础上data升序
data.drop_duplicates()                   #去掉所有列都相同的项,
data.drop_duplicates(subset='k1')        #去掉某一列相同的项

apply函数

import pandas as pd data = pd.DataFrame({'food':['A1','A2','B1','B2','B3','C1','C2'],'data':[1,2,3,4,5,6,7]})
def food_map(series):if series['food'] == 'A1':return 'A'elif series['food'] == 'A2':return 'A'elif series['food'] == 'B1':return 'B'elif series['food'] == 'B2':return 'B'elif series['food'] == 'B3':return 'B'elif series['food'] == 'C1':return 'C'elif series['food'] == 'C2':return 'C'
data['food_map'] = data.apply(food_map,axis = 'columns')  #对其中的每一个样本使用一次food_map函数data = pd.read_csv('I:/ITLearningMaterials/TYD/Python_dataAnalyseAndMachineLearning/Chapter3_Pandas_Utils/Pandas_code/titanic_train.csv')
def not_null_count(columns):columns_null = pd.isnull(columns)    #对每列操作,如果为null则true否则为falsenull = columns[columns_null]         #对一个Boolean列操作return len(null)pd.set_option('display.max_rows',1000)
columns_null_count = data.apply(not_null_count)

常用操作

import pandas as pd import numpy as npages = [15,18,20,21,22,34,41,52,63,79]
bins = [10,40,80]
bins_res = pd.cut(ages,bins)    #bins 如果传入数值就按数值均分,如果是数组就按数组间隔均分#[(10, 40], (10, 40], (10, 40], (10, 40], (10, 40], (10,40], (40, 80], (40, 80], (40, 80], (40, 80]]Categories (2, interval[int64]): [(10, 40] < (40, 80]]
pd.value_counts(bins_res)  #对每个区间计数
group_names = ['Yonth','Mille','Old']
pd.value_counts(pd.cut(ages,[10,20,50,80],labels=group_names))   #对每组贴标签然后计数df = pd.DataFrame({'data1':np.random.randn(5),'data2':np.random.randn(5)})
df['data'] = df['data1']/df['data2']   #添加新的一行,为前两行的比值df2.drop('ration',axis='columns',inplace=True)   #删除列, inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改,inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。df.isnull()   #改变成Boolean的表,nan显示为true
df.isnull().any(axis = 1)   #axis=0指的是逐行,axis=1指的是逐列。  每一列中只要有一个是true则为true否则为false
df[df.isnull().any(axis = 1)]  #能显示含有nan的具体行
df.fillna(5)           #将nan填充为5

字符串操作

import pandas as pds1 = pd.DataFrame(np.random.randn(3,2),index=range(3),columns=['A a','B b'])
s1.columns = s1.columns.str.replace(' ','_')   #改变列条目名字的形式s3 = pd.Series(['a_b_C','c_d_e','f_g_h'])
s3.str.split('_')                   #分了之后还在同一行,用列表的形式表示
s3.str.split('_',expand=True)       #分成不同的行

TYD2019python机器学习实战笔记,初识 numpy 和 pandas相关推荐

  1. 机器学习实战笔记(Python实现)-04-Logistic回归

    转自:机器学习实战笔记(Python实现)-04-Logistic回归 转自:简单多元线性回归(梯度下降算法与矩阵法) 转自:人工神经网络(从原理到代码) Step 01 感知器 梯度下降

  2. 机器学习实战笔记(Python实现)-03-朴素贝叶斯

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  3. 机器学习实战笔记(Python实现)-01-机器学习实战

    今天发布一篇图片博客,看一下效果如何,如果效果,以后的博客尽量发图片上来. 机器学习实战 本博客来自于CSDN:http://blog.csdn.net/niuwei22007/article/det ...

  4. python实现线性回归预测_机器学习实战笔记(Python实现)-08-线性回归

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  5. 机器学习——科学计算库(Numpy,Matplotlib,Pandas)

    机器学习--科学计算库中主要介绍的内容是人工智能深度学习过程常用的几个python库,主要有Numpy,Matplotlib,Pandas等,具体如下所示 在学习的过程中,我也从网上借鉴了多位大佬的优 ...

  6. 机器学习实战笔记(Python实现)-02-k近邻算法(kNN)

    k近邻算法(kNN) 本博客来源于CSDN:http://blog.csdn.net/niuwei22007/article/details/49703719 本博客源代码下载地址:CSDN免费下载. ...

  7. 机器学习实战——笔记(第一章)

    机器学习基础 目录 机器学习的简单概述 机器学习的主要任务 算法选择与开发步骤 Python语言的优势 一.机器学习的简单概述 机器学习应用领域十分广泛,如人脸识别.推荐系统.手写数字辨识及垃圾邮件过 ...

  8. Python数据分析-初识numpy、pandas、scipy、matplotlib和Scikit-Learn等数据处理库

    1.numpy- 支持多维数组与矩阵的科学计算器包 功能:常用功能16条 a. ndarray-n维数组/矢量的操作. b. 支持高级大量的n维数组与矩阵的运算. c. 针对数组运算提供大量的数学函数 ...

  9. 01、python数据分析与机器学习实战——python数据分析处理库-Pandas

    pandas介绍 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. panda ...

最新文章

  1. BZOJ5324 洛谷4563 LOJ2545:[JXOI2018]守卫——题解
  2. Linux文件查找工具的探索
  3. #11 压缩与解压缩
  4. QML TableView表格使用示例
  5. php-fpm配置笔记
  6. visual studio code安装_Deepin系统中如何安装Visual Studio Code
  7. “MapReduce: Simplified Data Processing on Large Clusters”
  8. 【吐血整理】Java项目源码分享
  9. mysql学生管理系统毕业设计_学生成绩管理系统设计与实现(MySQL)
  10. echarts 叠加柱状图柱顶显示百分比
  11. rf 433/868MHZ sub-1g 无线通信知识系列(1):RF信道冲突
  12. 远距离WiFi无线传输方案,CV5200模组通信应用,无线自组网技术
  13. 手把手带你抓取智联招聘的“数据分析师”岗位!
  14. 客户端登陆 T3标准版,已停止工作
  15. Python版本极简打飞机
  16. 周末作业-循环练习题(未完)
  17. 负载均衡过程中的一台机器当掉了
  18. 推荐五款装机必备的常用软件
  19. Springboot毕设项目高校人事管理系统il4i5(java+VUE+Mybatis+Maven+Mysql)
  20. docker之操作管理应用模板、镜像、容器、构建基础镜像、状态删除

热门文章

  1. python海象运算符_【译】Python3.8新语法:海象运算符
  2. CLZ的银行(队列应用)
  3. argparse 模块详解
  4. Win10系统下设置Go环境变量
  5. win10内存组双通道时,显示为硬件保留一个内存的内存量
  6. 北斗定位背后的数学秘密
  7. 如何拯救一台老旧的笔记本电脑?看完文章瞬间就明白了
  8. 毫无基础的人如何入门Python?
  9. 能翻译维吾尔语的软件有哪些?这几个可以用用看
  10. vue横向树结构_Vue 递归实现树形结构