2021.11.1
【小旭学长-使用python进行城市数据分析】说明篇(开篇 )https://blog.csdn.net/wistonty11/article/details/121347825
【小旭学长-使用python进行城市数据分析】笔记篇(上):https://blog.csdn.net/wistonty11/article/details/121089882
【小旭学长-使用python进行城市数据分析】笔记篇(中):https://blog.csdn.net/wistonty11/article/details/121210664
【小旭学长-使用python进行城市数据分析】笔记篇(下):https://blog.csdn.net/wistonty11/article/details/121308188

文章目录

  • 1. 学前准备
  • 2. Python基础
    • 2.1 Python对象、变量、运算符、内置数据类型
    • 2.2 条件语句、循环语句、函数、包
    • 2.3 练习

1. 学前准备

1.1 python安装包一般有两种方法

再cmd中输入代码

pip install 包名(python自己提供的功能)
conda install 包名(anaconda自己提供的功能)

区别:

【pip】

  • 不一定会展示其他依赖包
  • 安装包是或许直接忽略依赖项的安装,尽在结果中提示错误

【conda】

  • 列出所需其他依赖包
  • 安装包时自动安装期依赖项
  • 可以便捷的在包的不同版本中切换

依赖包:大部分依赖包都是一些库文件,有动态库也有静态库,一个程序的依赖包如果没有安装,只安装了这个程序本身是不能使用

2. Python基础

2.1 Python对象、变量、运算符、内置数据类型

① 对象和变量

  • 对象:Python使用对象来存储一切东西
  • 变量:给对象一个名字
a = 1
b = ‘abc’
a = b = 'abc'
1是对象,a是变量;‘abc’对象,b是名字

② 需要注意的运算符

  • 整除:\
  • 求余:%
  • 或:|
  • 否:not
  • 并:and
  • 指数:**
(5>3) | (2 <1)
not True

注意:True False 都要首字母用大写,不然不识别

③ 内置数据类型

主要有六种:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Trple(元组)
  • Set(集合)
  • Dictionary(字典)

【数字类型】

数字类型主要包括四种:

1,2,3 #int 整型
1.23,2E-2 #float 浮点型
True,False # bool
1+2j # complex 复数

查看类型用 type()

type(1.0)

float

注意:当浮点转换成整型时,负数向上取整,正数向下取整

int(-1.6)
int(2.6)
float(1)

-1
2
1.0

注意:bool类型是整数True=1;False=0

5+True

6

【字符串】

  • 字符串用单引号,双引号,三引号括起来,且必须成对出现
  • 只有三引号号可以换行,单双引号换行报错
'''
asdaisd
sadsad
sadq'''

‘\nasdaisd\nsadsad\nsadq\n\n\n’

  • 字符串中存在反斜杠(\)时,后面被识别转义字符;如果字符串左边加上r,避免转移
print("asd\nfgh")

asd
fgh

print(r"asd\nfgh")

asd\nfgh

  • 字符串中的索引可以使用中括号【】来选择;从左到右0开始,从右到左-1开始;
a="abcdefg"
a[0]
a[-1]

a
g

  • 【:】来切片;冒号左边是开始位置,冒号右边是结束位置,如果没写就是到头
a[2:-1] # 'cdef'
a[2:] #'cdefg'
a[:-1] #'abcdef'
a[:] #'abcdefg'

注意:切片时候左闭右开,可看上面例子中有没有g

  • 字符串可通过“+”连接字符串,也可以通过星号(*)重复字符串
a*3 #'abcdefgabcdefgabcdefg'
a+"000" # 'abcdefg000'
a+"你好" #'abcdefg你好'


字符串.来连接列表【】中各个数据项

'.'.join(['a','b','c','d']) #'a.b.c.d'
'-'.join(['a','b','c','d']) #'a-b-c-d'

字符‘-’替换字符‘.’

'a.b.c.d'.replace('.','-') # 'a-b-c-d'
'a.b.c.d'.replace('.','') # 'abcd'

左删除lstrip(),右删除rstrip()

'a-b-c-d'.rstrip('d') #'a-b-c-'
'a-b-c-d'.lstrip('a') #'-b-c-d'

注意:不正确的删除没有效果

'a-b-c-d'.lstrip('d') # 'a-b-c-d'
'a-b-c-d'.rstrip('-') # 'a-b-c-d'

.find('查找的东西',从几号位置起查找)

'a-b-c-d'.find('-') # 1
'a-b-c-d'.find('a') # 0
'a-b-c-d'.find('-',2) # 3

列表(List)

b = ['a','b',[1,2,3,4,['k']],'c',0,True,'d']
print(b) # ['a', 'b', [1, 2, 3, 4, ['k']], 'c', 0, True, 'd']
  • 【】定义List
  • 里面内容可以是数字、字符串、列表、bool;字符串要加引号‘’
  • 和字符串一样,列表可以通过索引或者切片操作来访问某一个或者某一块连续的元素

c=list("abcdse123") #['a', 'b', 'c', 'd', 's', 'e', '1', '2', '3']
len(c) # 9
max(c) # s
c.append("你好") # ['a', 'b', 'c', 'd', 's', 'e', '1', '2', '3', '你好']
c.remove("c") # ['a', 'b', 'd', 's', 'e', '1', '2', '3', '你好']
c.reverse() # ['你好', '3', '2', '1', 'e', 's', 'd', 'b', 'a']
c.insert(1,"hahaha") # ['你好', 'hahaha', '3', '2', '1', 'e', 's', 'd', 'b', 'a']

元组(Tuple)

  • ()定义List
  • 元组是不可变类型,即里面元素不能


字典(Dict)

由”键值对“构成,每个键值对由键(key)值(value)对应构成:

dic1={"type":"car",0:7,"brand":"bmz"
}# {'type': 'car', 0: 7, 'brand': 'bmz'}
  • 花括号来范围{},键:type,0,brand与 值*:“car”,7,"bmz"一一对应
  • 键值对用分割,可以换行(上例分了三行)
  • 存储很灵活,可以镶嵌(json格式)
dic3={"type":"car",0:[1,2,3,4,5,{"type1":"car1",0:7,"brand1":"bmz1"}],"brand":"bmz"
}dic3[0][-1]
# {'type': 'car', 0: 7, 'brand': 'bmz'}dic3[0][-1]['brand1']
# 'bmz1'

注意:同一个键定义多次显示最后面值

dic2={"type":7,"type":8}
dic2# {'type': 8}
  • 只能通过键取值

dic1={"type":"car",0:7,"brand":"bmz"
}len(dic1) # 1
dic1["type"] # 'car'
dic1[0] # 7
dic1.items() # dict_items([('type', 'car'), (0, 7), ('brand', 'bmz')])
dic1.values() # dict_values(['car', 7, 'bmz'])
dic1.keys() # dict_keys(['type', 0, 'brand'])

集合(set)

# 两种定义方法#直接定义
a = {"1", "2","3","4"}
# {'1', '2', '3', '4'}# 元组或者列表放到set()变成集合类型
e = set([1,2,3,4])
# {1, 2, 3, 4}
  • 注意:集合是无序不重复的,无序是不按输入的次序
e1 = set([1,2,3,4,3,5])
# {1, 2, 3, 4, 5}e2 = set([3,5,6,1,2,3,4,3,5])
# {1, 2, 3, 4, 5, 6}
  • 注意:创建空集合必须用set()而不是{},因为{}会创建一个字典
f1 = {}
type(f1)  #dictf2 = set()
type(f2) # set

e = set([3,5,6,1,2,3,4,3,5])
e.add(0) # {0, 1, 2, 3, 4, 5, 6}e.remove(5) # {0, 1, 2, 3, 4, 6}f = set([5,6,7,8])
e & f # {6}
e | f # {0, 1, 2, 3, 4, 5, 6, 7, 8}
e-f # {0, 1, 2, 3, 4}

2.2 条件语句、循环语句、函数、包

① if 条件语句:


② 循环语句:

for循环

while循环

③ 函数:

匿名函数

  • lambda是匿名函数标志
  • 冒号:前是输入
  • 冒号:后是输出
#下面三个例子等价
def myfunc(a,b):a += breturn amyfunc(10,2) # 12
def myfunc1(a,b):return a+bmyfunc1(10,2) # 12
myfunc3 = lambda a,b:a+bmyfunc3(10,2) # 12

内置函数

a = []
help(a) # 输出的是 关于列表用法min([1,2]) # 1abs(-1) # 1divmod(10,3) # (3,1)a = 4
exec('a += 2') # 6eval('a += 2') # 报错
eval('a + 2') # 8
  • 功能差不多,都是将字符串里面当代码执行。但exec()用的多,因为eval()没办法赋值操作

f = open('文件路径')
f.read() # 全读
f.readlines() # 逐行读 读到最后
f.readline()  # 只读第一行
f.close() # 关掉是为了防止一直占用
round(1.01127498327) # 1
round(1.01127498327,6) # 1.011275list(range(3)) # [0, 1, 2]
list(range(1,9,2)) # [1, 3, 5, 7]a = ['a','b','c','d']
for i in range(len(a)):print(i,a[i])

0 a
1 b
2 c
3 d

a = [5,2,3]
sorted(a) # [2, 3, 5]def f(a):return a*2list(map(f,a)) # [10, 4, 6]
  • round()保留位数为小数点位数,并四舍五入
  • range()左闭右开

③ 包的导入

import json #导入包
json.dump # 引用包里的方法dump
from json import *
dump # 引用包里的方法dump
  • 两种方法都是导入json全部包
  • 第二种方法不用再写json.
from json import dump
  • 只导入了json里面的dump方法
import pandas as pd
  • 包pandas别名pd
  • 引用只能用pd.不能用pandas.

2.3 练习

将下面的b字符串用.分割成数字,其中每一个数字代表的是a字符串中字符的位置,请将这些字符依次索引,拼成完整的句子并输出

a = 'ASWs NvDIuCLOEUYVoe'
b = '8.4.11.-2.6.18.4.-4.-2.9'words=""
for i in b.split("."):words += a[int(i)]
words # 'I Love You'

将整个字符串的内容全部反转过来

c = 'I could still see the airport buildings far below'
c= c[::-1]# 'woleb raf sgnidliub tropria eht ees llits dluoc  I'
  • [::-1] 前两项都缩写 也就是便利整个字符串
  • 第三个位置是步伐,1是每次一个位置,2是移动两个位置,-1是从最后一位向前移,每次一步,-2是每次两步 从最后一位w开始

给定一个字符串,请去掉字符串的最后一位

# 用切片
c2 = 'I could still see the airport buildings far below'
c2 = C2[:-2]

给定一个句子,句子中单词用空格分割,将句子中的单词位置反转(单词字母的顺序不要变)。比如:“hello ni hao”-> “hao ni hello”

c3 = 'I could still see the airport buildings far below'
' '.join(c3.split(' ')[::-1])
  • 先用.split(" ")利用空格把句子分成一个单词一个单词
  • 用[::-1]把以单词为单位求逆序
  • 最后将这个逆序list用空格“ ”.join连起来

下面的一串字符串是一个坐标,请把它变成list的形式

[124.456704,51.360794]。list中的数字为浮点型:

d = '124.456704,51.360794'
[float(d.split(",")[0]),float(d.split(",")[1])] # [124.456704, 51.360794]

⑥ 下面有一串字符串里面有一些坐标

其中,每个坐标点用;分割,坐标内又同时包含x和y坐标,以逗号分割。
‘data_test:124.456704,51.360794;124.470579,51.360967;124.477988,51.362294;124.482691,51.366009;124.490196,51.380395;124.500132,51.381395;124.502327,51.381232;124.516331,51.379176;124.526475,51.374428;124.540962,51.373421;124.555744,51.375379;124.567144,51.372207;124.574999,51.370307;124.587184,51.363671;124.595319,51.356729;124.600498,51.34944;124.604882,51.345385;124.606956,51.343215;124.612089,51.339088;124.624557,51.328643;124.626609,51.327512;124.635593,51.326618;124.638012,51.32798;124.642859,51.331108;124.648612,51.332627;124.669118,51.333266;124.689629,51.332398;124.69347,51.332709;124.713271,51.340195;124.717057,51.340791;124.721704,51.343376;124.729691,51.346302_ok’

请把坐标整理为:
[[124.456704,51.360794],
[124.470579,51.360967],
[124.477988,51.362294],…]
这样的格式

d = 'data_test:124.456704,51.360794;124.470579,51.360967;124.477988,51.362294;124.482691,51.366009;124.490196,51.380395;124.500132,51.381395;124.502327,51.381232;124.516331,51.379176;124.526475,51.374428;124.540962,51.373421;124.555744,51.375379;124.567144,51.372207;124.574999,51.370307;124.587184,51.363671;124.595319,51.356729;124.600498,51.34944;124.604882,51.345385;124.606956,51.343215;124.612089,51.339088;124.624557,51.328643;124.626609,51.327512;124.635593,51.326618;124.638012,51.32798;124.642859,51.331108;124.648612,51.332627;124.669118,51.333266;124.689629,51.332398;124.69347,51.332709;124.713271,51.340195;124.717057,51.340791;124.721704,51.343376;124.729691,51.346302_ok'
e = d.lstrip('data_test:').rstrip('_ok').split(';')

[‘124.456704,51.360794’,
‘124.470579,51.360967’,
‘124.477988,51.362294’,
‘124.482691,51.366009’,
‘124.490196,51.380395’,
‘124.500132,51.381395’,
‘124.502327,51.381232’,
‘124.516331,51.379176’,
‘124.526475,51.374428’,
‘124.540962,51.373421’,
‘124.555744,51.375379’,
‘124.567144,51.372207’,
‘124.574999,51.370307’,
‘124.587184,51.363671’,
‘124.595319,51.356729’,
‘124.600498,51.34944’,
‘124.604882,51.345385’,
‘124.606956,51.343215’,
‘124.612089,51.339088’,
‘124.624557,51.328643’,
‘124.626609,51.327512’,
‘124.635593,51.326618’,
‘124.638012,51.32798’,
‘124.642859,51.331108’,
‘124.648612,51.332627’,
‘124.669118,51.333266’,
‘124.689629,51.332398’,
‘124.69347,51.332709’,
‘124.713271,51.340195’,
‘124.717057,51.340791’,
‘124.721704,51.343376’,
‘124.729691,51.346302’]

results = []
#对分割后的每个点循环
for point in e:#取出点的x值和y值x = point.split(',')[0]y = point.split(',')[1]#将xy都转化为浮点型,添加到list里面results.append([float(x),float(y)])
results

[[124.456704, 51.360794],
[124.470579, 51.360967],
[124.477988, 51.362294],
[124.482691, 51.366009],
[124.490196, 51.380395],
[124.500132, 51.381395],
[124.502327, 51.381232],
[124.516331, 51.379176],
[124.526475, 51.374428],
[124.540962, 51.373421],
[124.555744, 51.375379],
[124.567144, 51.372207],
[124.574999, 51.370307],
[124.587184, 51.363671],
[124.595319, 51.356729],
[124.600498, 51.34944],
[124.604882, 51.345385],
[124.606956, 51.343215],
[124.612089, 51.339088],
[124.624557, 51.328643],
[124.626609, 51.327512],
[124.635593, 51.326618],
[124.638012, 51.32798],
[124.642859, 51.331108],
[124.648612, 51.332627],
[124.669118, 51.333266],
[124.689629, 51.332398],
[124.69347, 51.332709],
[124.713271, 51.340195],
[124.717057, 51.340791],
[124.721704, 51.343376],
[124.729691, 51.346302]]

下面的字符串,它的内容是一个list,但它却是一个字符串,请把它转换为真正的list

a = "['a','b','c','d',{'name':'aaa'}]"
exec('result = '+a)
result
  • exec执行了字符串result=[‘a’,‘b’,‘c’,‘d’,{‘name’:‘aaa’}]这个赋值操作

⑧ 把下面的list:
[‘a’,‘b’,‘c’,‘d’]
转为:
[{‘name’: ‘a’, ‘value’: 1},
{‘name’: ‘b’, ‘value’: 2},
{‘name’: ‘c’, ‘value’: 3},
{‘name’: ‘d’, ‘value’: 4}]

results = []
for i in range(len(e)):result ={}result["name"] = e[i]result["value"] = i+1results.append(result)
results

⑨ 把下面的list:
[{‘name’: ‘aaaa’, ‘value’: 123},
{‘name’: ‘bbb’, ‘value’: 67},
{‘name’: ‘cc’, ‘value’: 54},
{‘name’: ‘dd’, ‘value’: 224}]
转为两个list:
output2_name = [‘aaaa’,‘bbb’,‘cc’,‘dd’]
output2_value = [123,67,54,224]

f =[{'name': 'aaaa', 'value': 123},{'name': 'bbb', 'value': 67},{'name': 'cc', 'value': 54},{'name': 'dd', 'value': 224}]output2_name = []
output2_value = []
for i in f:output2_name.append(i['name'])output2_value.append(i['value'])

⑩ 把下面的list:
[{‘name’: ‘aaaa’, ‘value’: 123},
{‘name’: ‘bbb’, ‘value’: 67},
{‘name’: ‘cc’, ‘value’: 54},
{‘name’: ‘dd’, ‘value’: 224}]
转为一个dict:
{‘name’:[‘aaaa’,‘bbb’,‘cc’,‘dd’],
‘value’:[123,67,54,224]}

f =[{'name': 'aaaa', 'value': 123},{'name': 'bbb', 'value': 67},{'name': 'cc', 'value': 54},{'name': 'dd', 'value': 224}]output2_name = []
output2_value = []
for i in f:output2_name.append(i['name'])output2_value.append(i['value'])
result = {'name':output2_name,'value':output2_value}

【小旭学长-使用python进行城市数据分析】笔记篇(上)相关推荐

  1. python玩转大数据_【小旭学长】大数据博士教你用python玩转时空大数据

    好消息!好消息!手把手教你用python玩大数据 小旭学长的python大数据教程完结撒花,共26P录制完毕,总时长4小时.每10分钟的视频的录制加剪辑时间加起来都要两小时以上,讲得很细但是节奏也很快 ...

  2. python houdini_【微笔记】houdini使用python创建城市教程笔记II

    原标题:[微笔记]houdini使用python创建城市教程笔记II 今天继续学习第二部分,使用python处理block和创建属性,批量处理导入的建筑模型.最大的感受是使用程序去处理批量重复的东西真 ...

  3. python houdini_【微笔记】houdini使用python创建城市教程笔记I

    原标题:[微笔记]houdini使用python创建城市教程笔记I 昨天小编分享了houdini使用python制作城市的教程,讲解得非常不错,不过个人建议大家至少有一些python基础和houdin ...

  4. python金融大数据分析笔记----第十章 2(风险测量)

    10.4 风险测量 VaR CVaR 10.4.1. 风险价值(Var) VaR(Value at Risk,风险价值或风险溢价)是度量一项投资或投资组合可能产生的下跌风险的方法,它描述的是在一定的概 ...

  5. 基于Python的大数据分析实战篇(二)

    ☀前言: Hello,大家好!我又回来了,下面我将给大家讲解一下,关于我们Python大数据分析的实战测试,希望大家可以在发现错误后,提出意见,我将立刻做出修改.

  6. Python数据分析笔记(上)

    文本文件的读取 Pandas读取官方文档查阅地址 Input/Output - pandas 0.24.2 documentation (pydata.org) read_csv\read_table ...

  7. python资本市场财务数据分析_史上最全的上市公司财务数据

    就是三个报表的项目.我晕.哪个数据库都能下吧. 这个还需要整理三个月? 气.... 股票代码 年度 股票简称 公司中文名 公司英文名 CSRC行业分类 GICS行业分类 地区 交易所 中小企业板标示 ...

  8. python金融大数据分析视频_Python金融大数据分析 PDF 全书超清版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python金融.大数据分析方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小47.8 MB,希尔皮斯科编写,目前豆瓣.亚马逊. ...

  9. 全国地铁城市数据分析(python实现)

    全国地铁城市数据分析(数据清洗+可视化分析) 一确定问题: 由题看出其属于开放问题,没有明确的目的(即可认为无题),其重点是让人发现问题(比如过程中分析时发现数据有哪些实在的问题就可以拿出来单独分析) ...

最新文章

  1. 为节省内存,Firefox 将用新方式阻止加载没用到的标签页
  2. 解决MySQL数据库作古掉以及谢绝任事的办法
  3. [css] 写出你知道的CSS水平和垂直居中的方法
  4. 前端学习(1692):前端系列javascript之typeof
  5. WordPress标签(tag)url自动转化插件
  6. QThread与QWidget使用
  7. Excel 条件格式使用方法
  8. Linux 内核的壳 —— shell
  9. JavaWeb从入门到精通 二
  10. 转载《港股基础知识大全》
  11. vue3+vite2警告提示The above dynamic import cannot be analyzed by vite问题,vite中import动态引入
  12. 合肥二手房房价分析(多元线性回归)
  13. corutine rust_corutine rust_rust 异步 IO:从 mio 到 coroutine
  14. Python飞机大战(究极迫害版)
  15. php常用系统函数库,PHP常用函数大全
  16. 【spring的使用方法】
  17. 谷歌浏览器解决跨域问题 --disable-web-security --user-data-dir
  18. 常微分方程-变量分离、变量变换、线性微分方程和常数变易法
  19. 第一章恶意软件静态分析基础
  20. idea中搭建基于maven的ssm整合框架

热门文章

  1. MySQL字符串处理函数的用法及使用举例
  2. Springboot Freemarker配置全局变量
  3. php fmt formatdate,2020-04-18T16:51:56+08:00 类型的时间格式化处理
  4. 雷达视频化安防软件——RadarVison
  5. 微软股价创新高,突破300美元!我入职后,股票翻了10倍!
  6. 百度,你能不能有点节操?
  7. uCos中的邮箱和消息队列
  8. c#窗体随机点名软件
  9. 启盈社:我体验开源世界的这几年
  10. 51单片机 时间控制的不同时段交通灯控制设计(简单版)