目录
一、numpy
1、属性、方法与操作
(1)属性
(2)方法
(3)操作
2、文件读取与保存
(1)文件读取
(2)文件保存
3、矩阵生成
二、Pandas
1、属性与方法
(1)属性
(2)方法
2、数据选取
(1)取行
(2)取列
3、数据处理
(1)数据缺失值
(2)空值处理
(3)数据重复处理
(4)数据合并
(5)数据排序
(6)数据分组
4、数据导入与读取
(1)数据库导入
(2)文件读取
5、文件导出
6、数据转换
7、可视化matplotlib函数
一、numpy
1、属性、方法与操作
数据类型:ndarray
(1)属性
.ndim:矩阵维度
.shape:矩阵的形状
.size:矩阵中元素的个数
.dtype:元素数据类型
.T:矩阵的转置
(2)方法
reshape(shape):返回新的数组
resize(shape):返回修改原有的数组
sum()、max()、min()、mean():可设置axis按行列计算
tolist():array转变为list
fill(value):填充
(3)操作
array[行索引]:索引
array[起始行:结束行:步长,起始列:结束列:步长]:切片
2、文件读取与保存
(1)文件读取
np.loadtxt(filename,delimiter=,encoding=):文件读取以及参数
dtype:默认以浮点数类型读取
comments:默认忽略掉文件中以#号开头的注释行
delimiter:无默认值,应该指定分隔符如‘,’
usecols:默认取所有列,可以设置读取指定的列如(1,3)指文件的第2和第四列
skiprows:默认0,不跳过头行,可是这跳过开头的n行
maxrows:默认取文件的所有行,可设置读取文件的最大行数,不包括skiprows
(2)文件保存
np.savetxt(filename,array_data,):文件保存以及对应参数
fmt:默认以高精度浮点数保存数据,可以设置如整数‘%d’
delimiter:默认以空格分隔符字段,课设置CSV如‘,’
encoding:默认字符编码模式
3、矩阵生成
np.array(object):生成array数据
np.empty(shape),np.empty_like(a):生成空矩阵
np.zeros(shape), np.zeros_like(a):生成全为0的矩阵
np.ones(shape), np.ones_like(a):生成全为1的矩阵
np.full(shape,value), np.full_like(a,value):生成指定value和类型的矩阵
np.eye(ndim):生成指定维度且对角线为1,其余地方为0的矩阵
np.fromstring():创建一个新的一维数组,该数组从字符串中的文本数据初始化
np.arange(start,end,step):通过arange函数生成一个array对象
np.linspace(first,last,size):可以生成等间距数组
np.concatenate([a,b],axis=0):用来对数列或矩阵进行合并的
np.random.rand(), np.random.randn(), np.random.randint(),np.random.uniform(), np.random.normal(), ...:通过Python的随机函数进行array数据类型创建
np.sum(), np.mean(), np.median(), np.max(), np.min(), np.std(),...聚合函数
二、Pandas
1、属性与方法
(1)属性
.index:获取行索引对象
.values:获取element数组
.shape/.ndim/.size/.dtype:数组/维度/大小/类型
.columns:获取列索引对象
.T:获取转置DataFrame
(2)方法
.get(列名,缺省值):获取列和df[列名]类似,但不会因列名不存在报错
.copy():复制一个新对象
.head(n)/.tail(n):头/尾n行
.max()/.min()/.mean()/.median()... .describe():数据分布与统计
.insert(插入位置,插入列,插入数据):插入一列
.drop(行号)、.drop(列名,axis=1):删除行\列,默认删除行列后生成新的dataframe,如需要在原dataframe上删除可设置参数inplace=True。
del df[列名]:删除列,直接作用在df上
.drop_duplicates(subset=[列名],keep=“first|last”,inplace=False):删除重复项
.unique():唯一值
.set_index(列名):使用某列作为index
.reset_index(drop=True|False,inplace=True|False)
.apply(np.sum):对每列数据执行指定的函数运行
df.apply(function,axis=1):生成新列
.apply_map(function):对每个单元格元素执行指定的运算函数
2、数据选取
(1)取行
按行索引(index)标签取:
df.loc[行标签]:取一行数据导一个Series对象
df.loc[[行标签]]:取一行数据导dataframe对象
df.loc[[行标签1,行标签2,行标签3,...]]:取多行数据到一个dataframe
df.loc[首行标签:末行标签:步长]:行切片
按照行索引(index)位置取
df.iloc[行号]:取一行数据到一个Series对象
df.iloc[[行号]]:取一行数据到一个dataframe对象
df.iloc[[行号1,行号2....]]:取多行数据到一个DataFrame对象
df.iloc[起始行号:结束行号:步长]:行切片
(2)取列
①按列名取:
df[列标签]:取一列数据到一个Series对象
df[[列标签]]:取一列数据到一个dataframe对象
df.loc[[列标签1,列标签2,列标签3,...]]:取多列数据到一个dataframe
df.loc[首列标签:末列标签:步长]:列切片
②按照列索引(index)位置取:
df.iloc[:,列号]:取一列数据到一个Series对象
df.iloc[:,[列号]]:取一列数据到一个dataframe对象
df.iloc[:,[列号1,列号2....]]:取多列数据到一个DataFrame对象
df.iloc[:,起始列号:结束列号:步长]:列切片
③取行列数据:
df.loc[[行标签1,行标签2...],[列标签1,列标签2,...]]:df.loc[按行标签取,按列标签取]
df.loc[首行标签:末行标签:步长, 首列标签:末列标签:步长]:切片
df.iloc[[行号1,行号2,...], [列号1,列号2,...]]:df.iloc[按行位置取,按列位置取]
df.iloc[起始行号:结束行号:步长, 起始列号:结束列号:步长]:切片
3、数据处理
(1)数据缺失值
np.nan\pd.nat:空值类型
.isna():得到一个元素是否为空的bool矩阵(空值检测)
.notna():得到一个元素是否不为空的bool矩阵(空值检测)
(2)空值处理
①空值填充:
.fillna(填充值):使用填充值去填充空值部分
.fillna(method='ffill'):用上一个值填充空值
.fillna(method='bfill'):用下一个值填充空值
.fillna(method='ffill',axis=1):用左一个值填充空值
.fillna(method='bfill',axis=1):用右一个值填充空值
df["成绩"].fillna(df["成绩"].mean()):用给定值填充空值
②空值清除
.dropna():默认除去包含任意空值的行
.dropna(axis=1):去除包含任意空值的行
.dropna(how='all'):只有一行所有值都为空才去除
.dropna(subset=包含空值的行或列):只判断给定行或列中是否有空值
(3)数据重复处理
.duplicated():生成一个是否重复行的bool数组(数据重复检验)
.drop_duplicates():去除重复项,其中.drop_duplicates(subset=列名)按照列名检测重复项
(4)数据合并
pd.concat([df1,df2],axis=0):行拼接,列集合
pd.concat([df1,df2],axis=1):列拼接,行集合
df1.merge(df2,left_on=左表列名,right_on=右表列名, how='innerleft|right|outer|cross'):默认使用相同的列进行关联,也可以指定两个df的不同名关联列
df1.join(df2,on=列名或列号,how='left|right|inner|outer'):默认使用index进行关联,也可以指定两个df的公共关联列
(5)数据排序
.sort_index():对行索引排序(按index排序)
.sort_index(axis=1):对列索引(列名)排序(按index排序)
.sort_values(by):按by列值排序
.sort_values(by, axis=1):按by行值排序
通用参数:
- ascending:True升序,False降序
- inplace: 是否修改原数据
- na_position: "first"|"last" 缺失值排在最前或最后
(6)数据分组
①使用.groupby()方法分组
df_student.groupby("班级"):单字段分组
df_student.groupby(["班级","性别"]):多字段分组
②使用函数分组
01、行
def set_index_group(index):if index % 2 == 0:return "偶数行"else:return "奇数行"df_iris.groupby(set_index_group)
02、列
def set_column_group(column_name):if "length" in column_name:return "length"elif "width" in column_name:return "width"else:return "classfication"df_iris.groupby(set_column_group,axis=1)
03、GroupBy对象
.groups:得到所有的group
.get_group():得到指定的group
.apply():对group数据执行函数
.agg()|.aggregate():对group进行聚合统计
.max()/.min()/.mean()/.median()/.sum()/......:对group数据统计
4、数据导入与读取
(1)数据库导入
参数1:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='密码',db='数据库名')
参数:2:conn=sqlite3.connect('mydb.db')
pd.read_sql_query(sql,conn):连接关系数据库执行SQL语句并获取结果集
(2)文件读取
pd.read_csv(file):
参数:
delimiter|sep=',':分隔符
comment='#':注释符
encoding='utf-8':文本编码
header=0:列头行
names=[]:指定列名
index_col=[]:指定列作为行索引
usecols=[]:读取指定列
skiprows=0:跳过数据行数
skipfooter=0:截止数据行数
nrows=0:读取数据行数
parse_dates=False:是否转换日期字符串为日期格式
infer_datetime_format=False:是否自动设置日期格式
pd.read_excel(file):sheet_name=0:指定工作表
pd.read_xml(file_or_buffer):xpath='./*':指定读取XPATH路径
pd.read_html(file_or_buffer):读取HTML页面
pd.read_json():读取JSON字符串或者JSON文件
pd.read_pickle():读取pickle序列化文件
5、文件导出
df.to_csv():将df数据写入分隔符文本文件
df.to_excel():将df数据写入Excel表格文件
df.to_xml():将df数据写入XML文件
df.to_html():将df数据写入HTML文件
df.to_json():将df数据写入JSON文件
df.to_pickle():将df数据写入pickle序列化文件
df.to_dict():转换成字典
6、数据转换
df.to_numpy():转换成Numpy数组
df.to_string():转换成字符串
7、可视化matplotlib函数
df.plot():绘制折线图
df.plot.bar():绘制柱状图
df.plot.barh():绘制横柱图
df.plot.scatter():绘制散点图
df.plot.box():绘制箱型图
df.plot.hist():绘制直方图
df.plot.pie():绘制饼图