实训札记
NumPy
以下所有统计函数都可以指定轴
astype() ndarry对象的数据类型可以通过astype()方法进行转换.
数组运算
切片和索引
多维数组的切片和索引
布尔型索引的基本使用
布尔型索引只能拿到位置为True的信息
常用的一元函数
常用的二元函数
where NumPy的where(condition,x,y)函数是三元表达式x if condition else y的矢量化版本.
.sort() 对数组排序(在原数组上进行操作,默认通过最后一个轴排序).
.all() 判断数组中所有元素是否都满足条件.Y->True,N->False,只要有一个为False,则返回值就是False.所有都为True,返回值才为True.
.any() 类似于.all(),对数组中的元素进行判断,有一个满足括号内条件的,就返回True.
np.uniqual(arr) 对数组进行去重并返回排序后的结果
np.inld(arr1,arr2) 遍历arr1中的每一个元素,判断arr1中的每一个元素是否在arr2中存在,返回值是一个布尔型数组
线性代数模块
NumPy中提供了一个用于矩阵乘法的dot()方法.
rand()
rand() 隶属于numpy.random模块,它的作用是随机生成N维浮点数组.
如果()中不给定任何参数,则返回一个0~1之间的浮点数;
random.rand(m,n),返回一个m行n列的数组,且数值都是在0~1之间;
random模块中还包括了可以生成服从多种概率分布随机数的其他函数
Pandas
series
series是一个类似于一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分组成.(series的索引位于左边,数据位于右边).
pandas的series类对象可以用以下方法构建
可以直接使用索引获取数据
获取位置索引3对应的数据
ser_obj[3]
DataFrame
DataFrame的创建
在创建DataFrame时可以为其指定列索引
可以使用列索引的方式来获取一列数据,返回的结果是一个Series对象
可以认为DataFrame对象就是由多个Series对象组成的
要想为DataFrame增加一列数,则可以通过给列索引或者列名称赋值的方式实现
del语句 删除某一列数据
可以通过data.values拿到数据
DataFrame直接索引只支持先列后行,不支持先行后列的索引方式
如果希望能完成先行后列的索引方式,需要使用
loc和iloc方法.
算术运算与数据对齐
数据排序
按索引排序
按索引对Series进行分别排序,示例如下
按值排序
Pandas中用来按值排序的方法为sort_values(),该方法的语法格式如下:
在DataFrame中,sort_values()方法可以根据一个或多个列中的值进行排序,但是需要在排序时,将一个或多个列的索引传递给by参数才行
统计计算与描述
常用的统计计算方法
describe()方法
describe()方法,一次性输出多个统计指标,语法格式如下:
认识层次化索引
层次化索引可以理解为单层次索引的延伸,即在一个轴方向上具有多层索引.
层次化索引的操作
在使用sort_index()方法排序时,会优先选择按外层索引进行排序,然后再按照内层索引进行排序.
读写文本文件
to_csv()方法的功能是将数据写入csv文件中
read_csv()方法的功能是将csv文件中的数据读取出来,转换成DataFrame对象展示
读取txt格式的文件可以使用read_csv()函数,也可以使用read_table()函数.
to_excel()方法的功能是将DataFrame对象写入Excel工作表中.
read_excel()函数的作用是将Excel中的数据读取出来,转换成DataFrame展示
读取HTML表格数据
对于网页中的表格,可以使用
read_html()函数进行读取,并返回一个包含多个DateFrame对象的列表.
读写数据库
安装connector
conda install mysql-connector-python
连接到数据库
mysql -uroot -p mysql
Pandas中的io.sql模块中提供了常用的读写数据库函数
read_sql()函数既可以读取整张表,又可以执行sql语句.
通过create_engine()函数创建链接时,需要指定格式如下:'数据库类型+数据库名称://用户名:密码@机器地址:端口号/数据库名'
to_Sql()方法的功能时将Series或DataFrame对象以数据表的形式写入数据库中
数据预处理
空值和缺失值的处理
fillna()
通过fillna()方法填充常量的实例如下:df_obj.fillna('66.0')
使用fillna()方法进行指定填充
df_obj.fillna({'A':4.0,'B':5.0}) (通过字典进行填充,key->缺失列的名称,value->填充的值)
使用fillna()方法进行前向填充
df_obj.fillna(method='ffill'),效果如下:
将含有缺失值的行(axis=0,默认是按行删除)或列(axis=1)进行删除
df_obj.dropna()
重复值的处理
Panads提供了两个函数专门用来处理重复值,分别为duplicated()和drop_duplicates()方法.
duplicated()(用于判断)方法的格式如下:
duplicated(subset=None,keep='first')
drop_duplicates()(用于更改)方法的格式如下:
drop_duplicates(subset=None,keep='first',inplace=False)
上述方法中,inplace参数接收一个布尔类型的值,表示是否替换原来的数据,默认为False.如果是False,则返回一个新的数据,若为True,则会在原数据上进行更改.
异常值的处理
正态分布
例题(通过3σ)
定义一个函数,通过3σ的方式判断是否是异常值,如果是异常值,则将异常值返回.
点击查看详细代码
def three_sigma(ser):
# 求平均值
mean_value = ser.mean()
# 标准差
std_value = ser.std()
# 判断条件
rule = (mean_value - 3 * std_value > ser) | (mean_value + 3 * std_value < ser)
# 根据条件完成数据的索引,需要先获取数据的索引,然后再通过索引获取数据
index = np.arange(ser.shape[0])[rule]
outrange = ser.iloc[index]
# 返回数据
return outrange
箱型图
例题(通过箱型图)判断是否有异常值
判断代码如下:
df.boxplot(column=['A','B','C','C'])
结果为:
更改数据类型
创建Pandas数据对象时,如果没有明确指出数据的类型,则可以根据传入的数据推测出来,并且通过dtype属性进行查看.
还可以在创建Pandas对象时明确地指定数据的类型,即使用构造方法中地dtype参数指定数据类型
通过astype()方法可以强制转换数据的类型
astype()方法存在一些局限性,当待转换的数据中存在非数字以外的字符,使用astype()方法就会出错.
to_numeric()函数的出现解决了这个问题.
to_numeric()函数可以将传入的参数转换为数值类型
数据合并
轴向堆叠数据
concat()函数可以沿着一条轴将多个对象进行堆叠,其使用方式类似数据库中的数据表合并.
objs:需要进行合并的对象,要放在一个元组或是列表中
主键合并数据
主键合并类似于关系型数据库的连接方式,它是指根据一个或多个键将不同的DataFrame对象连接起来,大多数是将两个DataFrame对象中重叠的列作为合并的键.
Pandas中提供了用于主键合并的merge()函数.
join()方法能够通过索引或指定列来连接多个DataFrame对象.
重塑层次化索引
unstack()方法可以将数据的行索引转换为列索引.
轴向旋转
转换前
转换后
pivot()方法的作用是,根据给定的行或列索引重新组织一个DataFrame对象
重命名轴索引
rename()方法的作用:重命名个别列索引或行索引的标签或名称
例