目录
常用数学统计方法总结
读取或保存数据
缺省值和异常值处理
常用数学统计方法总结
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 的原始数据 =================================
语文 数学 外语 物理
- 90 99 98 None
- 80 70 10 None
- 60 89 75 None
将所有的缺省的数据填充为 1=================================
语文 数学 外语 物理
- 90 99 98 1
- 80 70 10 1
- 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
来源: https://www.cnblogs.com/-wenli/p/10274932.html