python数据处理之基本函数,python的基本函数

发布时间:2022-11-17

本文目录一览:

  1. python常用函数
  2. Python气象数据处理与绘图(2):常用数据计算方法
  3. python三个重要的内置函数(map, filter,reduce)
  4. python字典操作函数

python常用函数

  1. complex() 返回一个形如 a+bj 的复数,传入参数分为三种情况:
    • 参数为空时,返回 0j
    • 参数为字符串时,将字符串表达式解释为复数形式并返回;
    • 参数为两个整数 (a,b) 时,返回 a+bj
    • 参数只有一个整数 a 时,虚部 b 默认为 0,函数返回 a+0j
  2. dir()
    • 不提供参数时,返回当前本地范围内的名称列表;
    • 提供一个参数时,返回该对象包含的全部属性。
  3. divmod(a,b)
    • a -- 代表被除数,整数或浮点数;
    • b -- 代表除数,整数或浮点数;
    • 根据除法运算计算 a,b 之间的商和余数,函数返回一个元组 (p,q)p 代表商 a//bq 代表余数 a%b
  4. enumerate(iterable, start=0)
    • iterable -- 一个可迭代对象,如列表、元组等;
    • start -- 计数索引值,默认初始为 0
    • 该函数返回枚举对象是一个迭代器,利用 next() 方法依次返回元素值,每个元素以元组形式存在,包含一个计数元素(起始为 start)和 iterable 中对应的元素值。

Python气象数据处理与绘图(2):常用数据计算方法

对于气象绘图来讲,第一步是对数据的处理,通过各类公式,或者统计方法将原始数据处理为目标数据。 按照气象统计课程的内容,我给出了一些常用到的统计方法的对应函数: 在计算气候态、区域平均时均要使用到求均值函数,对应 NCL 中的 dim_average 函数,在 Python 中通常使用 np.mean() 函数:

numpy.mean(a, axis, dtype)

假设 a[time,lat,lon] 的数据,那么: 需要特别注意的是,气象数据中常有缺测,在 NCL 中,使用求均值函数会自动略过,而在 Python 中,当任意一数与缺测 (np.nan) 计算的结果均为 np.nan,比如求 [1,2,3,4, np.nan] 的平均值,结果为 np.nan。 因此,当数据存在缺测数据时,通常使用 np.nanmean() 函数,用法同上,此时 [1,2,3,4, np.nan] 的平均值为 (1+2+3+4)/4 = 2.5。 同样的,求某数组最大最小值时也有 np.nanmax()np.nanmin() 函数来补充 np.max()np.min() 的不足。 其他很多 np 的计算函数也可以通过在前边加 nan 来使用。 另外,也可以直接将 a 中缺失值全部填充为 0

np.std(a, axis, dtype)

用法同 np.mean()。 在 NCL 中有直接求数据标准化的函数 dim_standardize(),其实也就是一行的事,根据需要指定维度即可。

皮尔逊相关系数

相关可以说是气象科研中最常用的方法之一了,numpy 函数中的 np.corrcoef(x, y) 就可以实现相关计算。但是在这里我推荐 scipy.stats 中的函数来计算相关系数: 这个函数缺点和优点都很明显,优点是可以直接返回相关系数 R 及其 P 值,这避免了我们进一步计算置信度。而缺点则是该函数只支持两个一维数组的计算,也就是说当我们需要计算一个场和一个序列的相关时,我们需要循环来实现。 其中 a[time,lat,lon]b[time],(NCL 中为 regcoef() 函数)。 同样推荐 Scipy 库中的 stats.linregress(x,y) 函数:

  • slope: 回归斜率
  • intercept: 回归截距
  • r_value: 相关系数
  • p_value: P
  • std_err: 估计标准误差 直接可以输出 P 值,同样省去了做置信度检验的过程,遗憾的是仍需同相关系数一样循环计算。

python三个重要的内置函数(map, filter, reduce)

map

map 函数第一个参数是一个函数 function,第二个参数是一个可迭代的对象 iterable,它的功能是将可迭代对象 iterable 里面的每一项都应用到函数 function 中,然后返回一个迭代器。 可迭代器里面有多少个元素则结果就包含多少个元素。

filter

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。 该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 TrueFalse,最后将返回 True 的元素放到新列表中。

reduce

reduce() 函数会对参数序列中的元素进行累积。 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

python字典操作函数

字典是一种通过名字或者关键字引用的数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是 Python 中唯一内建的映射类型,基本的操作包括如下:

  1. len():返回字典中键—值对的数量;
  2. d[k]:返回关键字对应的值;
  3. d[k]=v:将值关联到键值 k 上;
  4. del d[k]:删除键值为 k 的项;
  5. key in d:键值 key 是否在 d 中,是返回 True,否则返回 False
  6. clear():清除字典中的所有项;
  7. copy():返回一个具有相同键值的新字典;deepcopy() 使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题;
  8. fromkeys():使用给定的键建立新的字典,键默认对应的值为 None
  9. get():访问字典成员;
  10. has_key():检查字典中是否含有给出的键;
  11. items()iteritems()items() 将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems()items() 作用相似,但是返回的是一个迭代器对象而不是列表;
  12. keys()iterkeys()keys() 将字典中的键以列表形式返回,iterkeys() 返回键的迭代器;
  13. pop():删除字典中对应的键;
  14. popitem():移出字典中的项;
  15. setdefault():类似于 get 方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值;
  16. update():用一个字典更新另外一个字典;
  17. values()itervalues()values() 以列表的形式返回字典中的值,itervalues() 返回值的迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素。

一、字典的创建

1.1 直接创建字典

d = {'one':1, 'two':2, 'three':3}
print(d)
print(d['two'])
print(d['three'])

运算结果:

{'three': 3, 'two': 2, 'one': 1}

1.2 通过 dict 创建字典

items = [('one',1), ('two',2), ('three',3), ('four',4)]
d = dict(items)
print(d)
print(d['one'])
print(d['three'])

运算结果:

{'four': 4, 'three': 3, 'two': 2, 'one': 1}

或者通过关键字创建字典:

d = dict(one=1, two=2, three=3)
print(d)
print(d['one'])
print(d['three'])

运算结果:

{'three': 3, 'two': 2, 'one': 1}

二、字典的格式化字符串

d = {'one':1, 'two':2, 'three':3, 'four':4}
print(d)
print("three is %(three)s." % d)

运算结果:

{'four': 4, 'three': 3, 'two': 2, 'one': 1}
three is 3.

三、字典方法

3.1 clear():清除字典中的所有项

d = {'one':1, 'two':2, 'three':3, 'four':4}
print(d)
d.clear()
print(d)

运算结果:

{'four': 4, 'three': 3, 'two': 2, 'one': 1}
{}

3.2 copy():返回一个具有相同键值的新字典

x = {'one':1, 'two':2, 'three':3, 'test':['a','b','c']}
y = x.copy()
y['three'] = 33
print(y)
print(x)

运算结果:

{'test': ['a', 'b', 'c'], 'one': 1, 'three': 33, 'two': 2}
{'test': ['a', 'b', 'c'], 'three': 3, 'two': 2, 'one': 1}

注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改。deepcopy() 使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。

3.3 fromkeys():使用给定的键建立新的字典,键默认对应的值为 None

d = dict.fromkeys(['one', 'two', 'three'])
print(d)

运算结果:

{'three': None, 'two': None, 'one': None}

或者指定默认的对应值:

d = dict.fromkeys(['one', 'two', 'three'], 'unknow')
print(d)

运算结果:

{'three': 'unknow', 'two': 'unknow', 'one': 'unknow'}

3.4 get():访问字典成员

d = {'one':1, 'two':2, 'three':3}
print(d.get('one'))
print(d.get('four'))

运算结果:

1
None

注:get() 函数可以访问字典中不存在的键,当该键不存在时返回 None

3.5 has_key():检查字典中是否含有给出的键

d = {'one':1, 'two':2, 'three':3}
print(d.has_key('one'))
print(d.has_key('four'))

运算结果:

True
False

3.6 items()iteritems()items() 将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems()items() 作用相似,但是返回的是一个迭代器对象而不是列表

d = {'one':1, 'two':2, 'three':3}
list = d.items()
for key, value in list:
    print(key, ':', value)

运算结果:

three : 3
two : 2
one : 1

3.7 keys()iterkeys()keys() 将字典中的键以列表形式返回,iterkeys() 返回键的迭代器

d = {'one':1, 'two':2, 'three':3}
print(d.keys())
for x in d.iterkeys():
    print(x)

运算结果:

['three', 'two', 'one']
three
two
one

3.8 pop():删除字典中对应的键

d = {'one':1, 'two':2, 'three':3}
print(d)
d.pop('one')
print(d)

运算结果:

{'three': 3, 'two': 2, 'one': 1}
{'three': 3, 'two': 2}

3.9 popitem():移出字典中的项

d = {'one':1, 'two':2, 'three':3}
print(d)
d.popitem()
print(d)

运算结果:

{'three': 3, 'two': 2, 'one': 1}
{'two': 2, 'one': 1}

3.10 setdefault():类似于 get 方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值

d = {'one':1, 'two':2, 'three':3}
print(d.setdefault('one', 1))
print(d.setdefault('four', 4))
print(d)

运算结果:

1
4
{'four': 4, 'three': 3, 'two': 2, 'one': 1}

3.11 update():用一个字典更新另外一个字典

d = {'one':123, 'two':2, 'three':3}
x = {'one':1}
d.update(x)
print(d)

运算结果:

{'three': 3, 'two': 2, 'one': 1}

3.12 values()itervalues()values() 以列表的形式返回字典中的值,itervalues() 返回值的迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素

d = {'one':123, 'two':2, 'three':3, 'test':2}
print(d.values())

运算结果:

[2, 3, 2, 123]