pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)
pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)
目录
1 2 3 4 | 常用数学统计方法总结<br> 读取或保存数据 缺省值和异常值处理 |
常用数学统计方法总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | count 计算非NA值的数量 describe 针对Series或DataFrame列计算统计 min / max / sum 计算最小值 最大值 总和 argmin argmax 计算能够获取到最小值和最大值的索引位置(整数) idxmin idxmax 计算能够获取到最小值和最大值的索引值 quantile 计算样本的分位数( 0 到 1 ) mean 值的平均数 median 值的中位数 mad 根据平均值计算平均绝对距离差 var 样本数值的方差 std 样本值的标准差 cumsum 样本值的累计和 cummin cummax 样本的累计最小值 最大值 cumprod 样本值的累计积 pct_change 计算百分数变化 |
读取或保存数据
读取数据
pandas可以从外部获取数据,构建数据对象,例如xlsx后缀的ececl文件,csv文件,txt文本等
下面以txt文件举例:
先创建txt文本
读取txt文本数据
1 2 3 4 5 6 7 8 9 10 | #读取txt文件 import pandas as pd # df = pd.read_csv('data1.txt',sep=':') #默认sep=','以什么分割数据,默认逗号 # print("data01.csv文件的原始数据==========================") # print(df) df = pd.read_csv( 'data1.txt' ,sep = ':' ,header = None ) #默认sep=',',header:去除表头,添加默认下标 print ( "data01.csv文件的原始数据==========================" ) print (df) #读取excel文件<br># df=pd.read_excel('data2.xlsx')<br># print(df) |
1 2 3 4 5 | 0 1 2 0 张伊曼 27 90 1 张巧玲 27 90 2 张诗诗 27 90 3 张思思 27 90 |
保存数据
1 | df.to_csv( 'data1.csv' ) #保存为csv文件<br>df.to_excel('data2.xlsx') #保存为xlsx |
缺省值和异常值处理
缺省值
1 2 3 4 5 6 7 8 9 | 什么是缺省值<br><br>null / None / NaN null经常出现在数据库中 None 是python中的缺失值,类型是NoneType NaN也是python中的缺失值,意思是不是一个数字,类型是 float 在pandas和Numpy中会将 None 替换为NaN,而导入数据库中的时候则需要把NaN替换成 None |
1 2 3 4 5 6 7 | 缺失值处理方法 pandas中缺省值NaN的 4 种处理方法: 1 isnull 2 notnull 3 dropna 4 fillna 方法 说明 dropna 根据标签中的缺失值进行过滤,删除缺失值 fillna 对缺失值进行填充 isnull 返回一个布尔值对象 ,判断 哪些值是缺失值 notnull isnull的否定式 |
判断缺省值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import numpy as np import pandas as pd df = pd.DataFrame(np.arange( 12 ).reshape( 3 , 4 ),index = [ 'a' , 'b' , 'c' ],columns = [ 'A' , 'B' , 'C' , 'D' ]) # print (df) #判断全部值的缺省值 d1 = df.isnull() print (d1) #在某行中判断缺省值 d2 = df[ 0 : 1 ].isnull() print (d2) #在某列中# 'A'列判断缺省值 d3 = df[ 'A' ].isnull() print (d3) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | A B C D a 0 1 2 3 b 4 5 6 7 c 8 9 10 11 <br> A B C D a False False False False b False False False False c False False False False <br> A B C D a False False False False <br> a False b False c False Name: A, dtype: bool |
删除缺省值
1 2 3 4 | 常用参数解释: how: 'all' ,删除全为空值的行或列 inplace = True :覆盖之前的数据 axis = 0 :选择行或列 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import numpy as np import pandas as pd dict0 = { '语文' : [ 90 , 80 , 60 ], '数学' : [ 99 , 70 , 89 ], '外语' : [ 98 , 10 , 75 ], '物理' : 90 } df0 = pd.DataFrame(dict0) # df0[ '数学' ][ 1 ] = np.nan # print ( "df0原数据===============================" ) print (df0) print ( "df0.dropna()===============================" ) print (df0.dropna()) #默认删除有缺省值所在的行 print ( "df0.dropna(axis=1)===============================" ) print (df0.dropna(axis = 1 )) #默认删除有缺省值所在的列 print ( "df0.dropna(how='all',axis=1)===============================" ) df0.ix[ 1 ] = np.nan print (df0.dropna(how = 'all' )) #当所有元素是缺省值的时候 才删除 print ( "df0.dropna(how='any',axis=1)===============================" ) df0[ '外语' ][ 0 ] = np.nan print (df0.dropna(how = 'any' )) #当所有元素有一个是缺省值的时候 才删除 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 语文 数学 外语 物理 0 90 99.0 98 90 1 80 NaN 10 90 2 60 89.0 75 90 df0.dropna() = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 数学 外语 物理 0 90 99.0 98 90 2 60 89.0 75 90 df0.dropna(axis = 1 ) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 外语 物理 0 90 98 90 1 80 10 90 2 60 75 90 df0.dropna(how = 'all' ,axis = 1 ) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 数学 外语 物理 0 90.0 99.0 98.0 90.0 2 60.0 89.0 75.0 90.0 |
填充缺失值
注意:在这里inplace会修改原始数据,并自动保存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import numpy as np import pandas as pd dict0 = { '语文' : [ 90 , 80 , 60 ], '数学' : [ 99 , 70 , 89 ], '外语' : [ 98 , 10 , 75 ], '物理' : None } df0 = pd.DataFrame(dict0) print ( 'df0的原始数据=================================' ) print (df0) print ( '将所有的缺省的数据填充为1=================================' ) print (df0.fillna( 1 )) #参数为填入值,可以为单个值,也可以为列表 print ( '将找到的缺省数据填充为平均值=================================' ) print (df0.fillna(df0[ '语文' ].mean())) #结合numpy的数学运算函数,求平均值 print (df0[ '物理' ].fillna(df0[ '语文' ].mean())) #结合numpy的数学运算函数,求平均值,当然pandas自己也有自己的方法 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | df0的原始数据 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 数学 外语 物理 0 90 99 98 None 1 80 70 10 None 2 60 89 75 None 将所有的缺省的数据填充为 1 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 数学 外语 物理 0 90 99 98 1 1 80 70 10 1 2 60 89 75 1 将找到的缺省数据填充为平均值 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 语文 数学 外语 物理 0 90 99 98 76.666667 1 80 70 10 76.666667 2 60 89 75 76.666667 0 76.666667 |
异常值处理
异常值就是与你想要获取的值偏差太大或者不是想要的值
先用条件判断筛选出来
再进行怎样的处理看需要
数据去重
1 2 3 | unique方法用于获取Series或DataFrame某列中的唯一值数组(去重数据后的数组) value_counts方法用于计算一个Series或DataFrame某列中各值的出现频率 isin方法用于判断矢量化集合的成员资格,是否在里面,可用于选取Series中或DataFrame列中数据的子集<br>另外也可以使用replace方法进行替换 |
这里演示的是Series类型数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import numpy as np import pandas as pd s1 = pd.Series([ 'a' , 'b' , 'c' , 'b' , 'a' ]) print ( "s1的原始数据==============================" ) print (s1) # print ( "数据去重方法:s1.unique()==============================" ) print (s1.unique()) #注意:s1.unique()返回的类型也是Series # print ( "单个值出现的个数:s1.value_counts()['a']==============================" ) print (s1.value_counts()[ 'a' ]) # print ( "值是否存在的方法:s1.isin(['a', 'b'])==============================" ) print (s1.isin([ 'a' , 'b' ]))<br> #print('替换方法================================')<br>#print(s1[0].replace['e']) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | s1的原始数据 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0 a 1 b 2 c 3 b 4 a dtype: object 数据去重方法:s1.unique() = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = [ 'a' 'b' 'c' ] 单个值出现的个数:s1.value_counts()[ 'a' ] = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 2 值是否存在的方法:s1.isin([ 'a' , 'b' ]) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0 True 1 True 2 False 3 True 4 True dtype: bool |
分类:
数据分析
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?