pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

目录

常用数学统计方法总结
读取或保存数据 缺省值和异常值处理

  

常用数学统计方法总结

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文本数据

#读取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文件
# df=pd.read_excel('data2.xlsx')
# print(df)

  

     0   1   2
0 张伊曼 27 90
1 张巧玲 27 90
2 张诗诗 27 90
3 张思思 27 90

  

保存数据

df.to_csv('data1.csv') #保存为csv文件
df.to_excel('data2.xlsx') #保存为xlsx

  

缺省值和异常值处理

缺省值

什么是缺省值

null/None/NaN

null经常出现在数据库中

None是python中的缺失值,类型是NoneType

NaN也是python中的缺失值,意思是不是一个数字,类型是float

在pandas和Numpy中会将None替换为NaN,而导入数据库中的时候则需要把NaN替换成None

  

缺失值处理方法
pandas中缺省值NaN的4种处理方法:1 isnull 2 notnull 3 dropna 4 fillna
方法 说明
dropna 根据标签中的缺失值进行过滤,删除缺失值
fillna 对缺失值进行填充
isnull 返回一个布尔值对象 ,判断 哪些值是缺失值
notnull isnull的否定式

  

判断缺省值

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)

 

   A  B   C   D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
A B C D
a False False False False
b False False False False
c False False False False
A B C D
a False False False False
a False
b False
c False
Name: A, dtype: bool

  

删除缺省值

常用参数解释:
how:'all',删除全为空值的行或列
inplace=True:覆盖之前的数据
axis=0:选择行或列
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')) #当所有元素有一个是缺省值的时候 才删除

  

   语文    数学  外语  物理
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会修改原始数据,并自动保存

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自己也有自己的方法

  

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

异常值处理

异常值就是与你想要获取的值偏差太大或者不是想要的值

先用条件判断筛选出来

再进行怎样的处理看需要

数据去重

unique方法用于获取Series或DataFrame某列中的唯一值数组(去重数据后的数组)
value_counts方法用于计算一个Series或DataFrame某列中各值的出现频率
isin方法用于判断矢量化集合的成员资格,是否在里面,可用于选取Series中或DataFrame列中数据的子集
另外也可以使用replace方法进行替换

这里演示的是Series类型数据

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']))
#print('替换方法================================')
#print(s1[0].replace['e'])

  

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

  

pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)的更多相关文章

  1. Android 学习笔记之如何使用SQLite数据库来保存数据...

    PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   ...

  2. numpy学习笔记 - numpy常用函数、向量化操作及基本数学统计方法

    # -*- coding: utf-8 -*-"""主要记录代码,相关说明采用注释形势,供日常总结.查阅使用,不定时更新.Created on Fri Aug 24 19 ...

  3. Pandas高级教程之:统计方法

    目录 简介 变动百分百 Covariance协方差 Correlation相关系数 rank等级 简介 数据分析中经常会用到很多统计类的方法,本文将会介绍Pandas中使用到的统计方法. 变动百分百 ...

  4. Python学习笔记-StatsModels 统计回归(3)模型数据的准备

    1.读取数据文件 回归分析问题所用的数据都是保存在数据文件中的,首先就要从数据文件读取数据. 数据文件的格式很多,最常用的是 .csv,.xls 和 .txt 文件,以及 sql 数据库文件的读取 . ...

  5. OI常用数学定理&方法总结

    组合数计算($O(n)$) https://www.cnblogs.com/linzhuohang/p/11548813.html Lucas定理 如果要计算很大的组合数,但模数较小,考虑这个方法 对 ...

  6. 常用的图片相关方法,读取,保存,压缩,缩放,旋转,drawable转化

    import android.content.Context; import android.content.res.AssetManager; import android.content.res. ...

  7. scrapy学习笔记(三):使用item与pipeline保存数据

    scrapy下使用item才是正经方法.在item中定义需要保存的内容,然后在pipeline处理item,爬虫流程就成了这样: 抓取 --> 按item规则收集需要数据 -->使用pip ...

  8. pandas 常用统计方法

    统计方法 pandas 对象有一些统计方法.它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series. 比如 DataFrame. ...

  9. pandas(5):数学统计——描述性统计

    Pandas 可以对 Series 与 DataFrame 进行快速的描述性统计,方便快速了解数据的集中趋势和分布差异.源Excel文件descriptive_statistics.xlsx: 一.描 ...

随机推荐

  1. 第18月第16天 statusBar

    1. 我们都知道要改状态栏statusBar的颜色很简单,只要如下一行代码就可以, [[UIApplicationsharedApplication]setStatusBarStyle:UIStatu ...

  2. UDP网络程序,客户端和服务端交互原理

    创建一个udp客户端程序的流程是简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实 ...

  3. mysql 原理~ index的详解

    一 简介:今天咱们来介绍下index的一些东西 二 数据的基本存储结构 1 磁盘空间被划分为许多大小相同的块(Block) 在内存中读出是页(Page).   2 一个表的这些数据块以链表的方式串联在 ...

  4. Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

    首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐 ...

  5. 【vim】实时加密文本 ggVGg?

    如果你不想让别人看懂你的屏幕上的内容,你可以使用一个内置的选项,通过下面的命令使用 ROT13 来对文本进行编码: ggVGg? gg 把光标移动到 Vim 缓冲区的第一行, V 进入可视模式, G ...

  6. Bootstrap3.0学习第二轮(栅格系统原理)

    详情请查看 http://aehyok.com/Blog/Detail/8.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  7. 001_ansible通过堡垒机登录

    一. 之前一直通过跳板机登录线上服务器,ssh可以的,如下图所示 vim ~/.ssh/config ssh xx.xx.xx.xx线上服务器是可以的,但是ansible执行显示目标主机不可达,其实a ...

  8. 转载:使用Nginx的必备软件(1.3.2)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19612.html 如果要使用Nginx的常用功能,那么首先需要确保该操作系统上至少安装了如下软件. (1)GCC编译器 GCC(GN ...

  9. TOMCAT服务器配置域名

    最近做了个网站,用的是web'服务器是tomcat,框架式SpringMVC,功能做好后,就准备上线使用了, 手上已经有域名以及一台服务器,已经绑定好ip了,剩下的也就是配置Tomcat了,比较简单, ...

  10. .net下web页生产一维条形码

    code-39 前台 aspx <asp:Image ID="imgBandCode" runat="server" ImageUrl="~/W ...