import pandas as pd
import numpy as np df = pd.DataFrame({
'key1': [4, 5, 3, np.nan, 2],
'key2': [1, 2, np.nan, 4, 5],
'key3': [1, 2, 3, 'j', 'k']
}, index=['a', 'b', 'c', 'd', 'e'])
print(df)
print(df['key1'].dtype,df['key2'].dtype,df['key3'].dtype)
print('-------')
'''
key1 key2 key3
a 4.0 1.0 1
b 5.0 2.0 2
c 3.0 NaN 3
d NaN 4.0 j
e 2.0 5.0 k
float64 float64 object
-------
'''
# 计算每一列的均值 df.mean()
# 只统计数字列,默认忽略nan。
print(df.mean())
'''
key1 3.5
key2 3.0
dtype: float64
'''
# 不忽略nan值计算均值
# skipna默认为True,如果为False,有NaN的列统计结果仍为NaN
m3 = df.mean(skipna=False)
print(m3)
'''
key1 NaN
key2 NaN
dtype: float64
'''
# 计算单一列的均值
print('计算单一列的均值',df['key2'].mean())
'''
计算单一列的均值 3.0
''' df2 = pd.DataFrame({
'key1': [1, 3, 5],
'key2': [2, 4, 6],
'key3': [3, 5, 7]
}, index=['a', 'b', 'c'])
# print(df2)
# print('--------df2')
# 计算df2每一行的均值并将其结果添加到新的列
df2['mean'] = df2.mean(axis=1)
print(df2)
'''
key1 key2 key3 mean
a 1 2 3 2.0
b 3 4 5 4.0
c 5 6 7 6.0
''' # 统计非NaN值的数量 count()
print(df)
print('-'*6)
print(df.count())
'''
key1 key2 key3
a 4.0 1.0 1
b 5.0 2.0 2
c 3.0 NaN 3
d NaN 4.0 j
e 2.0 5.0 k
------
key1 4
key2 4
key3 5
dtype: int64
''' # 统计
print(df)
print('-' * 6)
print('df的最小值',df.min())
print('df的最大值',df.max())
print('df的key2列的最大值',df['key2'].max())
print('统计df的分位数,参数q确定位置',df.quantile(q=0.75))
print('对df求和',df.sum())
print('求df的中位数,median(),50%分位数',df.median())
print('求df的标准差,std()',df.std())
print('求df的方差,var()',df.var())
print('求skew样本的偏度,skew()',df.skew())
print('求kurt样本的峰度,kurt()',df.kurt())
print('df累计求和,cumsum()',df['key2'].cumsum())
print('df累计求积,cumprod()',df['key2'].cumprod())
print('求df的累计最大值,cummax()', df['key2'].cummax())
print('求df的累计最小值,cummin()', df['key2'].cummin())
'''
key1 key2 key3
a 4.0 1.0 1
b 5.0 2.0 2
c 3.0 NaN 3
d NaN 4.0 j
e 2.0 5.0 k
------
df的最小值 key1 2.0
key2 1.0
dtype: float64
df的最大值 key1 5.0
key2 5.0
dtype: float64
df的key2列的最大值 5.0
统计df的分位数,参数q确定位置 key1 4.25
key2 4.25
Name: 0.75, dtype: float64
对df求和 key1 14.0
key2 12.0
dtype: float64
求df的中位数,median(),50%分位数 key1 3.5
key2 3.0
dtype: float64
求df的标准差,std() key1 1.290994
key2 1.825742
dtype: float64
求df的方差,var() key1 1.666667
key2 3.333333
dtype: float64
求skew样本的偏度,skew() key1 0.0
key2 0.0
dtype: float64
求kurt样本的峰度,kurt() key1 -1.2
key2 -3.3
dtype: float64
df累计求和,cumsum() a 1.0
b 3.0
c NaN
d 7.0
e 12.0
Name: key2, dtype: float64
df累计求积,cumprod() a 1.0
b 2.0
c NaN
d 8.0
e 40.0
Name: key2, dtype: float64
求df的累计最大值,cummax() a 1.0
b 2.0
c NaN
d 4.0
e 5.0
Name: key2, dtype: float64
求df的累计最小值,cummin() a 1.0
b 1.0
c NaN
d 1.0
e 1.0
Name: key2, dtype: float64
''' # 唯一值 :unique()
s = pd.Series(list('kjdhsakjdhjfh'))
sq = s.unique()
print(s)
print(sq)
print('sq的类型:',type(sq))
print('对sq进行重新排序:',pd.Series(sq).sort_values())
'''
0 k
1 j
2 d
3 h
4 s
5 a
6 k
7 j
8 d
9 h
10 j
11 f
12 h
dtype: object
['k' 'j' 'd' 'h' 's' 'a' 'f']
sq的类型: <class 'numpy.ndarray'>
对sq进行重新排序: 5 a
2 d
6 f
3 h
1 j
0 k
4 s
dtype: object
'''
# 对某一列进行值的计数,只能对一列,不能对Dataframe
print(df['key2'].value_counts()) # 判断Dataframe中的每个元素是否都是在某个列表中
print(df)
df_isin = df.isin([1,3])
print(df_isin)
'''
key1 key2 key3
a 4.0 1.0 1
b 5.0 2.0 2
c 3.0 NaN 3
d NaN 4.0 j
e 2.0 5.0 k key1 key2 key3
a False True True
b False False False
c True False True
d False False False
e False False False
'''

pandas中的数值计算及统计基础的更多相关文章

  1. Pandas中DateFrame修改列名

    Pandas中DateFrame修改列名 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下: 数据如下: >>>import pandas ...

  2. pandas中的分组技术

    目录 1  分组操作 1.1  按照列进行分组 1.2  按照字典进行分组 1.3  根据函数进行分组 1.4  按照list组合 1.5  按照索引级别进行分组 2  分组运算 2.1  agg 2 ...

  3. 数据分析面试题之Pandas中的groupby

      昨天晚上,笔者有幸参加了一场面试,有一个环节就是现场编程!题目如下:   示例数据如下,求每名学生(ID)对应的成绩(score)最高的那门科目(class)与ID,用Python实现: 这个题目 ...

  4. python – 基于pandas中的列中的值从DataFrame中选择行

    如何从基于pandas中某些列的值的DataFrame中选择行?在SQL中我将使用: select * from table where colume_name = some_value. 我试图看看 ...

  5. pandas中的空值处理

    1.空值 1.1 有两种丢失数据: None: Python自带的数据类型 不能参与到任何计算中 np.nan: float类型 能参与计算,但结果总是nan # None+2 # 报错 # np.n ...

  6. Pandas中关于accessor的骚操作

    来自:Python那些事 pandas中accessor功能很强大,可以将它理解为一种属性接口,通过它获得额外的方法. 下面用代码和实例理解一下: import pandas as pd pd.Ser ...

  7. 分位函数(四分位数)概念与pandas中的quantile函数

    p分位函数(四分位数)概念与pandas中的quantile函数 函数原型 DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpola ...

  8. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  9. Pandas中DataFrame修改列名

    Pandas中DataFrame修改列名:使用 rename df = pd.read_csv('I:/Papers/consumer/codeandpaper/TmallData/result01- ...

随机推荐

  1. DML和索引内部结构变化

    1.修改数据对索引结构的影响 合适的索引对查询性能和效率的提升是巨大的,但是万事有利有弊,拥有索引的表在增.删.改记录时需要去维护索引.如何让增.删.改更快速更高效?这就需要了解数据修改时对索引结构会 ...

  2. [转]JS实现千分位

    本文转自:https://www.cnblogs.com/lvmylife/p/8287247.html 方法一:正则实现 function format (num) { var reg=/\d{1, ...

  3. Layui上传图片 带接口

    layui.use('upload', function () { var upload = layui.upload; upload.render({ elem: '#LAY_avatarUploa ...

  4. angularjs学习第六天笔记(指令简介学习)

    您好,由于周末有事情,没哟学习angularjs,几天晚上开始继续学习angularjs,坚持加油每一天.谢谢 接着上周五学习了表单验证以后,今天开始学习angularjs中一个非常重要的模块:指令 ...

  5. c# Datatable导出Excel

    using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; ...

  6. mysql 主从模式总结(一)

    1. 主从模式的部署步骤 目标:部署一个有3台主机的单主模式的MySQL分组. Primary:192.168.197.110. Secondary:192.168.197.111. Secondar ...

  7. 贝尔数(来自维基百科)& Stirling数

    贝尔数   贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):   Bell Number Bn是基数为n的集合 ...

  8. Ajax实现的城市二级联动二

    上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染 1.HTML <select id="province"> <option> ...

  9. 站在DevOps肩膀上的TestOps(一)

    一十一 发表于 2018-03-14 15:50:03 TestOps   摘要: DevOps团队的职责是“无摩擦发展”. 这是对“速度需求”驱动的发展理念的一种渴望,以及有意识地去除从概念到客户的 ...

  10. Apache:详解QSA,PT,L,E参数的作用

    [QSA] 当被替换的URI包含有query string的时候,apache的默认行为是,丢弃原有的query string 并直接使用新产生的query string,如果加上了[QSA]选项,那 ...