Python本身可以处理的数据类型是比较有限的,但numpy、pandas、xarray等库引入了丰富的数据类型,从而拓展了Python在数据处理领域的使用。
Python3 中有六个标准的数据类型:number(数字)
、string(字符串)、list(列表)、tuple(元组)、set(集合)、dict(字典)。
其中不可变的数据类型有3种:number(数字)、string(字符串)、tuple(元组);可变数据也是3种:list(列表)、dict(字典)、set(集合)。
六种数据类型或多或少都有一些内置函数可以使用,例如,list类型若需要添加数据,可使用:
a.append(x)
x为所需添加的数字,a为需要被添加数据的列表,append为对list类型内置的函数。
由于六种数据类型及其内置函数的数量较多,就不在此一一列举了,需要学习的童鞋可以使用如“number 类型内置函数”等关键词自行百度了解~
对于number类型,Python3 支持int(整型)、float(浮点型)、bool(逻辑判断,1或0)、complex(复数)。
Python自带了一些数据类型之间的转换函数,常用到的部分通常是以下函数:
函数 |
描述 |
int(x) |
将x转换为整数 |
float(x) |
将x转换成浮点数 |
str(x) |
将 x 转换为字符串 |
tuple(s) |
将序列s 转换为一个元组 |
list(s) |
将序列 s 转换为一个列表 |
set(s) |
转换为可变集合 |
dict(d) |
创建一个字典。且必须按照(key, value)元组序列输入。 |
frozenset(s) |
转换为不可变集合 |
chr(x) |
将整数转换为字符 |
ord(x) |
将字符转换为其Ascii值 |
hex(x) |
将整数转换为十六进制字符串 |
oct(x) |
将整数转换为八进制字符串 |
Python3里内置了相当丰富的运算符,甚至一些在其他语言里需要通过函数才能完成的运算,在Python里只需要简单地使用运算符就可以达到目标。
算术运算符:
除了众所周知的加减乘除(+、-、*、/)之外,Python的算术运算符还包括:
运算符 |
含义 |
% |
取模,返回除法的余数 |
** |
幂运算 |
// |
向下取整的除法 |
逻辑运算符:
除了众所周知的大于小于等于(>、<、=)之外,还需要注意判定相等和不相等的写法:
运算符 |
含义 |
== |
表示相等 |
!= |
表示不等于 |
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:810735403
赋值运算符:
除此之外,Python自由灵活之处还在于其定义了一系列灵活的算术写法:
符号 |
含义 |
= |
赋值 |
+= |
加法赋值运算符 |
-= |
减法赋值运算符 |
*= |
乘法赋值运算符 |
/= |
除法赋值运算符 |
%= |
取模赋值运算符 |
**= |
幂赋值运算符 |
//= |
取整除赋值运算符 |
其使用方法为:
x += 1
相当于:
x = x+1
其余均可类似类推。
逻辑运算符:
运算符 |
含义 |
and |
与 |
or |
或 |
not |
非 |
除此之外,Python里还引入了 成员运算符和身份运算符。在写循环和条件判断的时候经常用到:
成员运算符:
运算符 |
含义 |
in |
判断序列中是否有成员x,是返回True |
not in |
判断序列中是否有成员x,否返回True |
举个循环里用到的栗子:
a = [1,2,3,4,5]
for each in a:
print(a)
得到:
身份运算符:
运算符 |
含义 |
is |
判断两个标识符是不是引用自一个对象 |
is not |
判断两个标识符是不是引用自不同对象 |
还有气象里不太常用到的位运算符:
运算符 |
含义 |
& |
按位与运算符 |
| |
按位或运算符 |
^ |
按位异或运算符 |
~ |
按位取反运算符 |
<< |
左移动运算符 |
>> |
右移动运算符 |
是不是感觉Python自带的数据类型实在太少了,面对各类数据的庞杂多样它根本不够用?没错,前辈们也这样觉得,因此numpy库就闪亮登场了。numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上。其类型包括:
名称 |
描述 |
bool_ |
布尔类型(True 或者 False) |
int_ |
默认整数类型(类似于 C 中的 long,int32 或 int64) |
intc |
与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp |
用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 |
字节(-128 to 127) |
int16 |
整数(-32768 to 32767) |
int32 |
整数(-2147483648 to 2147483647) |
int64 |
整数(-9223372036854775808 to 9223372036854775807) |
uint8 |
无符号整数(0 to 255) |
uint16 |
无符号整数(0 to 65535) |
uint32 |
无符号整数(0 to 4294967295) |
uint64 |
无符号整数(0 to 18446744073709551615) |
float_ |
float64 类型的简写 |
float16 |
半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 |
单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
float64 |
双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
complex_ |
128 位复数类型的简写 |
complex64 |
复数,表示双 32 位浮点数(实数部分和虚数部分) |
complex128 |
复数,表示双 64 位浮点数(实数部分和虚数部分 |
通过numpy库进行的数据类型转化也要通过函数才能进行,但并没有像之前出现的那样繁琐,通过astype()函数即可完成,使用方法如栗子所示:
import numpy as np
a = np.arange(0,1,0.1)
b = np.astype('int')
并且,numpy库添加了相当多计算、统计相关的函数,包括但不限于:
函数 |
含义 |
sqrt() |
平方根 |
sin() cos() |
三角函数 |
abs() |
绝对值 |
log/logl/log2() |
对数函数 |
exp() |
指数函数 |
cumsum() |
累积求和 |
cumproduct() |
累积求积 |
sum() |
求和 |
mean() |
求平均 |
nanmean() |
求除nan值(气象中缺测值)之外的平均 |
median() |
中位数 |
std() |
标准差 |
var() |
方差 |
corrcoef() |
相关系数 |
更多可查看官网界面查询:www.numpy.org.cn/reference/
numpy虽然有着各种各样的优点,但也有着自己的缺点,例如对于结构化数据的存取及处理很不灵活,因此基于numpy库编写出的pandas库应运而生。
pandas库引入了Series和DataFrame两种基本方式来存取数据。
pandas的数据类型与numpy大体相同,分为:字符串类型:object;整数类型:Int64,Int32,Int16, Int8;无符号整数:UInt64,UInt32,UInt16, UInt8;浮点数类型:float64,float32;日期和时间类型:datetime64[ns]、datetime64[ns, tz]、timedelta[ns];布尔类型:bool。
数据类型转换函数与numpy相同, 为astype(),用法也类似。
其常用计算函数有:
函数 |
含义 |
count() |
统计个数 |
sum() |
求和 |
mean() |
求平均 |
mad() |
平均绝对方差 |
argmin() |
最小值的索引位置 |
idxmin() |
每列最小值的行索引 |
mode() |
众数 |
cov() |
协方差 |
corr() |
相关系数 |
pct_change() |
时间序列变化 |
abs() |
绝对值 |
sem() |
标准误差 |
skew() |
偏度系数 |
kurt() |
峰度系数 |
更多可查阅官网:www.pypandas.cn/docs/
气象数据有其独特性,因此在之前的pandas等库的基础上,又发展出了在处理气象数据方面有着巨大优势的Xarray、netCDF4库等。
xarray提供了非常灵活的索引方式,结合了numpy和pandas的优势来进行数据存储。气象家园里biubiubiu123童鞋的博客,对Xarray库在气象里的应用有着较为全面的帮助。复制链接即可直达目录贴:bbs.06climate.com/forum.php?mod=viewthread&tid=94639。Xarray的官方网站链接为:xarray.pydata.org/en/stable/index.html。机智的小伙伴可以按照本文之前整理其他库的逻辑,从数据类型、数据转换和计算函数三个方面进行整理学习。小编就不在这里进行赘述啦。(否则篇幅太长了)
同理,netCDF4库的github主页链接:github.com/Unidata/netcdf4-python。
在这里还是要推荐下我自己建的Python开发交流学习(qq)群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和高级开发教程,欢迎进阶中和想深入Python的小伙伴!