前言

建议使用Jupyter Notebook编辑器。好用,无需多言。

如果需要修改Jupyter Notebook的默认文件夹位置,这里有一个网址可能会很有帮助。

jupyter notebook的默认文件夹位置_jupyter notebook目录在哪-CSDN博客

Numpy入门-数组

安装numpy

如果没有安装Numpy库,需要先在控制台上通过命令pip install numpy来安装。

安装完成后,通过如下代码即可导入该库。

import numpy as np

该代码表示导入Numpy库并为其命名一个别名为np。

使用array构造函数创建数组

import numpy as np

#创建一维数组
arr1 = np.array([1, 2, 3])

#创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])

同理,多维数组创建依次嵌套即可。需要注意的是,如果数组内元素为不同类型,那么它们会被强制转换为同一类型。

温馨提示:之后的代码都会默认有import numpy as np这句代码,就不重复写了。

使用其他方法创建数组

#创建元素全部为0的数组
arr1 = np.zeros(大小)

#创建元素全部为1的数组,不过元素类型为float64类型(32位机器上可能是float32)
arr2 = np.ones(大小)

#创建元素为数字序列的数组
arr3 = np.arange(起始值, 结束值, 步长)    #结束值不包含在范围内

数组的一些属性

属性
ndim数组的维度
shape一个元组,表示各个维度元素的个数
size数组元素的总个数
dtype数组元素的类型

数组的一些方法

函数/方法用法返回值是否改变原值
concatenate(函数)np.concatenate((数组1,数组2,…))
np.concatenate([数组1,数组2,…])
返回一个连接了数组1、数组2、…的数组
sort(函数)np.sort(数组)返回排序好的数组
sort(数组方法)数组.sort()None
max(数组方法)数组.max()数组中最大值
min(数组方法)数组.min()数组中最小值
sum(数组方法)数组.sum()数组所有元素之和
mean(数组方法)数组.mean()数组所有元素平均值

数组的索引

数组索引可以为负数,负数就是倒着的顺序。

可以通过索引,使用切片。如arr1[开始值:结束值]表示arr1中索引从开始值到结束值-1的元素,arr[:]表示所有元素。

数组索引可以是布尔值数组,可以达到根据条件筛选数组元素,例子如下:

假如有一个arr数组,对于arr > 6这个表达式则会产生一个布尔值数组,里面的元素为arr数组中对应位置的元素是否大于6的布尔值。

则对于arr[arr > 6]则会把相应位置为True的元素筛选出来。

当然这里还可以结合逻辑运算进行更复杂的筛选,如arr[(arr > 6) & (arr < 10)]。

数组的一些运算

数组之间的加、减、乘、除都是对应元素之间的相加、相减、相乘、相除

数组与单个数字进行的运算,会使数组上每一个元素与该数字进行对应运算。(广播机制)

Pandas入门-Series

安装pandas

同理,如果没有安装Pandas库,需要先在控制台上通过命令pip install pandas来安装。

安装完成后,通过如下代码即可导入该库。

import pandas as pd

温馨提示:之后的代码都会默认有import pandas as pd这句代码,就不重复写了。

使用Series构造函数创建Series

#创建Series一般方法
s1 = pd.Series([55, 66, 3, 77, 35])

#创建Series时指定自定义索引
s2 = pd.Series([1, 2, 3], index=["a", "b", "c"])

#传入字典创建Series,字典的键会自动变为索引,值变为对应值
s3 = pd.Series({"a":1, "b":2, "c":3})

Series的一些属性

属性
valuesSeries的所有元素
indexSeries的所有索引
str一个包含很多字符串操作的StringMethods类是咧

Series的索引

Series也有索引和切片操作,与数组基本一致。

不过Series的索引可以自定义。自定义的索引叫做标签索引,原本的索引叫做位置索引。

提醒:

  • 用标签索引切片是包含结束值的。
  • 当标签索引与位置索引都为数字时,索引取值时安装标签索引取值,而切片时按照位置索引切片。
  • 查看标签是否存在可以用”标签 in Series”来查看。

Series中关于索引的常用属性

属性名用法索引类型
locSeries.loc[“003”]
Series.loc[“001”:“003”]
标签索引
ilocSeries.iloc[3]
Series.iloc[1:3]
位置索引

这两个属性是用来便于区分是使用的标签索引还是位置索引的。

Series索引也可以是布尔值数组,可以达到根据条件筛选Series元素。使用方法与数组一样。

Series的一些运算

Series的运算和数组差不多。不过是Series会自动让参与运算的Series中拥有相同索引的值进行运算,如果出现一个索引在其他Series里没有相同索引的情况,运算后的Series会给这个索引赋值为NaN。

如果不想出现有NaN的情况,可以使用Series的一个方法add,如下段代码:

s1.add(s2, fill_Value=0)

给add方法的参数fill_value传一个值,这样对于其他Series中没有的索引所对应的值,会自动赋值为这个值,然后进行加法运算时就不会出现NaN了。

当然还有sub、mul、div方法分别对应减、乘、除。

这些方法不会改变原Series,而是返回一个新的Series。

Series的其他常用方法

方法用法返回值是否改变原值
maxSeries.max()Series中最大值
minSeries.min()Series中最小值
sumSeries.sum()Series所有元素的值之和
meanSeries.mean()Series所有元素的值的平均值
describeSeries.describe()关于Series的统计信息
applySeries.apply(callback)Series中每个元素经过callback函数操作后组成的新Series
isnullSeries.isnull()Series中对应元素是否为空的布尔值组成的Series
duplicatedSeries.duplicatedSeries中对应元素是否与之前的元素重复的布尔值组成的Series
value_countsSeries.value_countsSeries中相同元素的出现个数组成的Series
sort_valuesSeries.sort_values将Series中元素排序后组成的新Series

Pandas入门-DataFrame

DataFrame在Series的基础上添加了列名,可以看成由Series组成的字典,列名是键,值是一个Series。

使用DataFrame构造函数创建DataFrame

#创建DataFrame一般方法,默认索引为数字
s_id = pd.Series(["01", "02", "03"])
s_name = pd.Series(["虎哥", "刀哥", "小亮"])
df1 = pd.DataFrame({"Id":s_id, "名字":s_name})

#创建有标签索引的DataFrame方法1
s_id = pd.Series(["01", "02", "03"], index=["虎哥", "刀哥", "小亮"])
s_hp = pd.Series([200, 100, 50], index=["虎哥", "刀哥", "小亮"])
df2 = pd.DataFrame({"Id":s_id, "血量":s_hp})

#创建有标签索引的DataFrame方法2
s_id = pd.Series({"虎哥":"01", "刀哥":"02", "小亮":"03"})
s_hp = pd.Series({"虎哥":200, "刀哥":100, "小亮":50})
df2 = pd.DataFrame({"Id":s_id, "血量":s_hp})

#创建有标签索引的DataFrame方法3
df4 = pd.DataFrame({"Id":{"虎哥":"01" ,"刀哥":"02", "小亮":"03"},
                    "血量":{"虎哥":200 ,"刀哥":100, "小亮":50}})

DataFrame的一些属性

属性类型
columnsDataFrame的所有列名Pandas的Index类
indexDataFrame的所有索引Pandas的Index类
valuesDataFrame的所有值Numpy的ndarray类
TDataFrame的转置Pandas的DataFrame类

提取DataFrame的列的操作

操作返回类型
DataFame[列名]Pandas的Series类
DataFrame.列名Pandas的Series类
DataFrame.[列名列表]Pandas的DataFrame类

如果列名中包含空格或其他空白字符,则只能用第一种或第三种操作。

提取DataFrame的行的属性

属性名用法索引类型
locDataFrame.loc[“虎哥”]标签索引
ilocDataFrame.iloc[0]位置索引

要获取多行数据就使用切片或列表,如:DataFrame.loc[“虎哥”:”小亮”],DataFrame.iloc[1:3]或DataFrame.loc[[“虎哥”, “小亮”]],DataFrame.iloc[[3, 1]]等。

温馨提示:标签索引同样包含结束值。

提取DataFrame的单个元素

DataFrame.loc[行名, 列名]或DataFrame.iloc[行序号, 列序号]。

提取DataFrame的部分

DataFrame.loc[行名1:行名2, 列名1:列名2]或DataFrame.iloc[行序号1:行序号2, 列序号1:列序号2]。

筛选符合条件的DataFrame行

如:df[df[列名] > 60]或者df[df.列名 > 60]

跟数组条件筛选一样,只不过是根据列筛选行。也可以进行复杂条件筛选。

获取DataFrame的前/后N行的方法

方法名用法返回值是否修改原值
headDataFrame.head()
DataFrame.head(N)
DataFrame的前5行
DataFrame的前N行
tailDataFrame.tail()
DataFrame.tail(N)
DataFrame的后5行
DataFrame的后N行

更新DataFrame的一列值

1. DataFrame[列名] = Series

2. DataFrame[列名] = pd.Series([值1, 值2, …], index=[索引1, 索引2, …])

3. DataFrame[列名] = [值1, 值2, …]

需要的注意的是如果DataFrame中有标签索引,则要指定对应的索引或者用列表赋值,也就是第2或第3种操作来更新值,否则会产生缺失值。

需要注意的是,列表赋值时是按对应顺序为DataFrame该列赋值,而且需要列表长度与DataFrame的索引长度一致。

如果我们指定的列名在DataFrame里不存在,DataFrame会自动根据这个列名创建一个新的列,值为我们所赋的值。

更新DataFrame的一行值

与更新列值一样,不过是改成使用lociloc属性而已。

需要注意的是,如果行不存在的话用loc可以做到添加行的效果,而iloc不行,且会报错。

删除DataFrame的行或列的方法

方法用法返回值是否修改原值
dropDataFrame.drop([标签索引1, 标签索引2, …])返回被删除对应行的DataFrame
dropDataFrame.drop([列名1, 列名2, …], axis=1)返回被删除对应列的DataFrame

DataFrame的一些运算

DataFrame的运算和Series一样。

需要注意的是,当所有参与运算的DataFrame都没有(对应行, 对应列)位置的元素时,就算传入前面代码中的fill_value参数,也会出现NaN值。

DataFrame的其他常用方法

方法用法返回值是否改变原值
maxDataFrame.max()
DataFrame.max(axis=1)
DataFrame各列最大值
DataFrame各行最大值
minDataFrame.min()
DataFrame.min(axis=1)
DataFrame各列最小值
DataFrame各行最小值
sumDataFrame.sum()
DataFrame.sum(axis=1)
DataFrame各列所有元素值之和
DataFrame各行所有元素值之和
meanDataFrame.mean()
DataFrame.mean(axis=1)
DataFrame各列所有元素平均值
DataFrame各行所有元素平均值
describeDataFrame.describe()关于DataFrame各列的统计信息
infoDataFrame.info()关于DataFrame的概况
sampleDataFrame.sample(n)从DataFrame里随机抽取的n行数据
applyDataFrame.apply(callback)
DataFrame.apply(callback, axis = 1)
DataFrame中每列经过callback函数操作后组成的新DataFrame
DataFrame中每行经过callback函数操作后组成的新DataFrame
applymapDataFrame.applymap(callback)DataFrame中每个元素经过callback函数操作后组成的新DataFrame
isnullDataFrame.isnull()DataFrame中对应元素是否为空的布尔值组成的DataFrame
duplicateDataFrame.duplicateDataFrame中对应行是否与之前行重复的布尔值组成的DataFrame

duplicate方法的一些其他参数:

参数赋值作用
subset[列名,1 列名2, …]只有当subset内指定的列值相同时,才会判断为重复

By Liu

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注