首页 > Python资料 博客日记

学习笔记:python中的numpy,pandas库的用法

2024-10-01 12:00:05Python资料围观24

Python资料网推荐学习笔记:python中的numpy,pandas库的用法这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣

#参考于:10小时学会Python数据分析、挖掘、清洗、可视化从入门到项目实战 1 01 第一周重点内容梳理_哔哩哔哩_bilibili

# numpy
# 构造
# 1.强制转化:str>float>int
# 2.形成一个数组:np.array([])
# 3.快速填充数组:np.ones(shape),其中shape是方法,形成一个高阶数组,同样的还有np.zero(), np.full(fill_value)可指定任意的数来填充它
# 4.生成单位矩阵:np.eye()
# 5.等差数列:np.linespace(start=,stop=,num=) ,np.arrange(start=,stop=,num=,dtype=None)
# 6.生成随机数:np.random.randint():生成随机整数;np.random.random():生成随机小数;np.random.randn():生成随机正态分布数;np.random.normal():生成随机正常正态分布数;np.random.permutation():生成随机索引数;

# 访问
# 1.arr[index1,index2,index3...indexn]
# 2.元素:arr[index,column]
# 3.行:arr[index]
# 4.列:arr[:,column]
# 5.切片:arr[row1:row2,column1:column2]
# 使用列表访问:可以把任意的index替换成列表
# 使用BOOL列表访问:可以把任意的index替换成BOOL列表

# 属性
# 1.arr.shape: 类型  arr.ndim: 维度     arr.size: 大小      arr.dtype: 类型

# 运算
# 1.聚合运算:sum():求和,mean():平均数,std():平方根,np.meidan():中位数
# 2.np.nansum():可忽略nan值进行求和
# 3.使用axis来进行控制轴的方向,arr.sum(axis=1)
# 4.广播运算:两个集合要进行运算要求它们的形状要求一致,而广播就能够保证其运算的正常运行,处理形状的特性




# pandas 的两个数据类型
# 【1】Series:类字典的,一维的数组对象,可读性更高
# 构造:Series(data,index),Series(data=dict)
# 属性:s.shape,s.size,s.dtype,s.index,s.values
# 访问:兼容numpy的数组访问方式,兼容字典的访问方式。s.loc[显示索引,列表],s.iloc[隐式索引,列表]   注意:标签的切片是闭区间,索引的切片是开区间
# 运算:Series+num  广播    Series+Series 索引对齐,如果索引不对齐,会补空     Series+numpy.array  转换成相同的numpy.array再运算
# 常用方法:s.head(),s.tail():查看开头的5个元素和结尾的5个元素,本质是一个切片函数,但是一般用于查看结构,主要运用于DataFrame对象中
# s.sort_values(ascending):根据值排序
# s.sort_index():根据索引排序
# s.value_counts():统计列表中相同数据出现的次数
# s.unique():去重操作
# s.map():映射函数,可以接收dict,function,lamba,比如百分之成绩映射到五分制成绩

# 【2】DataFrame:是Series的容器,是一个字典对象(key:列标签,value:每一列的数据)
# 构造:DataFrame(data,index,columns),DataFrame(data={'name':[],'age':[]})
# 读取数据:pd.read_csv(), pd.read_excel(), pd.read_table()
# 属性:df.dtypes:获取每一列数据类型;df,index:获取行索引,是pd.Index()类型
# df.columns:获取列索引,是pd.Index()类型 ;df.value:获取值(numpy.array类型)
# df.shape ,df.size
# 常用方法:df.info():查看数据字段,字段类型,字段值的个数
# df.head(),df.tail()
# df.describe():查看常规的统计指标:count,mean,min,max,Q1,Q2,Q3
# df.dtypes:查看数据类型
# df.isnull:检测空值
# 访问:df.loc[row,column]  通用的访问方式
#  访问:df.iloc[row_index,col_index] 通用的隐式访问方式
# 元素访问:df.loc[rowname,colmane]
# 行访问:df.loc[rowname]
# 列访问:df.loc[:,colname]
# 列访问的特殊形式:把DataFrame当成字典来访问:df[colname]
# 行访问的特殊形式:df[rowname1:rowname2]
# 运算:DataFrame+num
#      DataFrame+Series
#      DataFrame+DataFrame
# 其他情况一概处理成numpy.array,采用广播,但是不考虑索引
# 聚合运算:
# 1.不考虑空值
# 2.默认列方向的聚合
# 常规的聚合函数:sum,mean,std
# 特殊的聚合函数:any,all
# 多层级的pandas对象
# 多层级索引的构造:pd.MultiIndex.from_product([A,B],[1,2,3])
# 访问方式:df.loc[index,column]
# 多层级的索引使用元组来表示:(level1_name,level2_name)


# pandas的常见业务处理
# 【1】空值的处理
# 查找空值:df.isnull().any(axis=0) 查找列方向是否存在空值    df.isnull().any(axis=1) 查找行方向是否存在空值
# 填充空值:df.fillna(value,method,axis)
# 用相同的值来填充所有的空值: value=‘待定’
# 用相邻值来填充空值:method,axis
# 用聚合指标来填充空值:df.fillna(value=df.mean())
# 过滤空值:df.dropna(axis,how)
# 使用BOOL列表过滤,找到符合的行或列的BOOL列表的表示
# eg:过滤包括空值的行 df.loc[df.isnull().any(axis=1)]
# 空值的说明:None   Noneobject
#          np.nan  float     表示形式是NaN,NaN并不是个数
# pandas对象会自动把None处理np.nan
# 【2】重复值的处理
# 查找重复值:df.duplicated(keep,subset)
# 删除重复值:df.drop_duplicates()
# 更灵活地删除函数:drop(by,axis)   by:标签   axis:轴的方向
# eg:删除任意科不及格的成绩:drop(df.loc[(df<60).any(axis=1)].index)
# 【3】异常值的处理
#  drop函数
#  认定条件:三倍标准差:np.abs(df)>3*np.std(df)     离群值(Q1,Q3,IQR)
# 【4】分组处理
# group_obj = df.groupby('分组的列标签\列表')
# group_obj.groups 查看分组情况
# group_obj.agg({'age':mean,'python':max})  聚合函数
# 透视表:pd.pivot_table(data,index,columns,values,agg) 查看两个字段的交叉关系
# 交叉表:pd.crosss_table(index,columns,value,agg)   统计两个字段的对应关系的频数
# 【5】汇总处理
# 级联:相同业务表汇总
# pd.concat(objs,axis,join,ignore_index,keys)
# join,inner,outer:考虑的是多个级联的表格的标签的交集,并集
# 合并:不同业务表汇总
# 1.合并是参考列的,和行没有关系
# 2.合并的列在内容上必须一对一,一对多或多对多关系中的一种
# 3.选择合并列的时候尽量选择离散性数据,避免数值型数据
# merge(left,right,how,on,left_on,right_on,left_index,right_index,suffiexes)
# how:left,right,inner,outer 参考的是列的内容,跟标签没关系
# left_index,right_index 把一个表的行索引作为和并项时使用
# on+suffiexes: 有多个相同列标签的合并
# left_on,right_on 合并的列名称不一样时使用



# pandas的其他操作
# 映射处理:
# replace(to_replace,value,method,limit,regex=True)    to_replace:number,str,list,dict,regex
# rename(index,columns,mapper,level,axis)
# map() 是Series的方法,不是DataFrame的

版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐