首页 > Python资料 博客日记
学习笔记:python中的numpy,pandas库的用法
2024-10-01 12:00:05Python资料围观35次
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进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj