pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)
2019-01-15 23:59
1051 查看
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列中数据的子集
这里演示的是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']))
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
相关文章推荐
- 机器学习--准备数据与Numpy(三)--数学和统计方法
- 工作之余,整理了一下平时处理数据的一些常用的,简单的方法。希望对学习JAVA的朋友有点帮助
- 大数据时代,海量数据处理常用思路和方法总结
- Spark一些常用的数据处理方法-2.MLlib基础统计方法
- Gentle.Net学习笔记三:常用更新数据的方法总结
- 转载一篇好文章:《海量数据处理常用思路和方法》2010-02-25 15:12大数据量,海量数据 处理方法总结
- php学习笔记(字符串常用处理方法与正侧)
- 【学习总结】数学-基本计数方法
- [导入]c# 统计方法执行时间,计算缓存读取数据方法的命中率
- java学习笔记——jsp简单方法读取txt文本数据
- 学习python(6)数据交换的几点方法总结
- 学习Python大数据处理模块Pandas
- 总结-处理字符串常用方法类
- Android中保存数据常用的方法
- django_book学习笔记7-django常用方法总结
- JS常用字符串处理方法应用总结
- php读取csv数据保存到数组的方法
- C#从数据库读取数据到DataSet并保存到xml文件的方法
- Direct3D中常用的数学计算方法总结
- C#.NET示例读写xml所有节点的代码实现方法和读取xml节点的数据总结