Python语言——数据类型
引言:Python的灵活性和可扩展性使得它成为GIS数据处理的理想工具,通过使用Python的库和模块,可以进行各种地理空间分析,如缓冲区分析、叠加分析、网络分析等;Python在GIS中还可以用于地图的绘制和可视化,通过使用Python的库和模块,如Matplotlib和Basemap等,可以将地理数据转换为可视化的地图,并进行各种样式和符号的设置。本文及之后文章将基于Python学习拓展到GIS应用。
变量及其类型:
在Python中,变量是用于存储数据值的标签,你可以把变量看作是用来存储信息的容器,变量的值的以修改和被读取,Python是一种动态类型语言,变量的类型是在运行时确定的,而不是在编译时,
以下是python中的一些常用数据类型:
1.整数(int):表示整数,如1,-6,100等。
2.浮点数(float):表示带小数点的数值,如1.0,-6.0,100.66等。
3.字符串(str):表示文本数据,通常使用英文状态下单引号‘’或双引号”“将文本包围,如’Hello‘ ”world“。
4.布尔值(bool):表示(True)真或(Falus)假,常用于条件语句(如if)中,以决定程序用来执行那一部分代码,
此外也常用于逻辑运算中。
以下为一些使用bool值案例:
#直接声明bool值
logic1=True
logic2=False
#使用bool值进行条件判断
if logic1:
print(logic1 is True)
else:
print(logic2 is False)
#使用bool值进行逻辑运算
result1=logic1 and logic2 #结果为False 因为 True and False 是 False
result2=logic1 or logic2 #结果为True 因为 True or False 是 True
result3=not logic2 #结果为True 因为 not True 是 False
print(result1,result2,result3)
#使用比较运算返回bool值
num1=30
num2=60
result=num1<num2
print(result) #结果为True 因为num1<num2
注意:在Python中bool值不仅只会表示为True和False,在实际操作中许多值可以被解释为布尔值
变量的使用 :
在编程中,变量是用来储存数据的容器。它们允许程序在执行过程中存贮,检索和修改数据。
Python 提供了许多内置函数,用于在变量之间进行类型转换。以下将通过使用一些常用的内置函数,用于处理变量类型之间的转换:
int()
:将其他任意数据类型转换为整数。
num_str = "159"
num_int = int(num_str) # num_int 是整数 159
float()
:将其他任意数据类型转换为浮点数。
num_str = "159.753"
num_float = float(num_str) # num_float 是浮点数 159.753
str():将其他数据类型转换为字符串。
num = 123.0 # 输入什么什么类型就输出什么类型
num_str = str(num) # num_str 是字符串 "123.0"
list()
:将其他可迭代对象(如字符串、元组等)转换为列表。
num=(1,2,3)
num_list=list(num) # lst 是列表 [1, 2, 3]
tuple()
:将其他可迭代对象(如列表、字符串等)转换为元组。
num=(1,2,3)
num_tuple=tuple(num) # num_tuple 是元组 (1, 2, 3)
set()
:将其他可迭代对象(如列表、元组等)转换为集合(无序且不重复)。
num=(1,2,3)
num_set=set(num) # num_set是集合{1,2,3}
dict()
:从键值对(如元组列表)或其他可迭代对象创建字典,用dist转换时注意:一个元组中包含两个元素,第一个元素为键,第二个元素为值。
num=[(1,'知'),(2,'青')]
num_dict=dict(num) #num_dict是字典 {1: '知', 2: '青'}
以上变量类型间的相互转换非常常用
对于初学Python GIS的建议从基础的空间数据处理和分析开始涉及解决GIS问题:
1. 筛选指定名称的空间要素
题目:如果你有一个包含多个城市名称的列表,你需要你从这个列表中找出包含“London”的城市,并用列表打印其名称。
城市列表:cities = ['Florida', 'London', 'London East', 'London West', 'Manchester']
解答:
cities = ['Florida', 'London', 'London East', 'London West', 'Manchester']
#筛选城市
#第一个city是目标列表的变量名
#第二个citr是一个循环变量,用于迭代cities列表
#第三个city是一个条件变量,用于检查当前迭代到的元素是否满足条件。
London_city=[city for city in cities if 'London' in city]
#打印列表
print(London_city)
2.读取CSV文件中的经纬度
题目:如果你有一个CSV文件,其中包含了城市的名称、经度和纬度。你需要使用Python来读取这个文件,并打印出所有城市的名称
CSV文件内容(假设文件名为
cities.csv
):Name,Longitude,Latitude
New York,-74.0060,40.7128
London,-0.1278,51.5074
Paris,2.3522,48.8566
CSV文件因其格式简单、体积小,易于使用,可以直接用Excel、记事本等工具打开和编辑,在GIS实践中,读取CSV文件中的经纬度数据是非常常见的操作(一般新建txt文件,输入内容后,更改文件后缀为csv即可)。
解答:
需要在使用在命令行界面(CMD)输入以下命令并按回车来安装pandas:
pip install pandas
安装后即可运行:
import pandas as pd
# 读取CSV文件
cities_read= pd.read_csv('E:/cities.csv') #该csv文件绝对路径为E:/cities.csv
#使用pd库中的read_csv函数读取并存入cities_read中
# 打印所有城市的名称
for index, row in cities_read.iterrows(): #for循环用于遍历cities_read中DataFrame中的每一行
print(row['Name']) #遍历cities_df中的每一行,并打印出每一行的'Name'列的值
解答解释:
这里主要对打印城市名称进行解释:
1.cities_read这是一个pandas DataFrame对象,它可能包含多个列和行,假设这个DataFrame包含了关于城市的信息,其中有一个列 名为'Name'。(DataFrame是pandas中用于存储表格数据的主要数据结构)
2.iterrows()它返回一个迭代器,该迭代器产生索引和行的对,DataFrame中的每一行iterrows()都会返回该行的索引和一个对象,该对象表示该行的数据。
3.for循环,它遍历由iterrows()产生的索引和行的对,index
变量将保存当前行的索引,row
变量将保存一个pandas对象,该对象包含当前行的所有列和对应的值。
上述内容均为学习使用,后续将持续发表该方面文章以记录学习过程