2019-05-21 12:00:41 vkingnew 阅读数 203
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108100 人正在学习 去看看 林男
大数据领域主要是以java为主,次要的编程语言为python,scala等,本文介绍和python相关的大数据:

python所需要的版本为python3.6:

数据源:
MySQL:
oracle:
MS SQL server:
postgresql: pip install  psycopg2
MongoDB:
Neo4J:
Redis:

大数据处理:
Hadoop:(HDFS、MapReduce、YARN)
 pip install dask
 pip install mrjob
 pip install pydoop (默认的为pydoop 1.2不稳定)
# pip install --pre pydoop
 hive:
 pyhive impyla
 hbase:
 happybase
 
 presto:
 pip install presto
 pip install presto-python-client
 clickhouse:
 ElasticSearch:
 elasticsearch-py
 pip install elasticsearch
 pip install pysolr
 pip install elasticsearch-dsl
 kafka:
 pip install kafka-python
 kafka pykafka
 spark:
 flink:
 
 kylin:
 kylinpy
 
 kudu:
 kudu-python
 impala:
 impyla
 apache-beam
 大数据可视化:
 pyecharts
 hue
 superset
 调度系统:
 luigi
 airflow
 安全:


Druid.io:官方
pip install pydruid
网站:
https://github.com/druid-io/pydruid
注意:
若同时安装上述软件,其依赖的软件包会有冲突。建议独立部署.

 

2019-03-02 21:50:26 hiramzheng 阅读数 106
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108100 人正在学习 去看看 林男

使用python进行数据处理,常免不了做数据拼接。可是因为常用的数据容器类型不少,有List,array,DataFrame等,时不时搞混(根本原因是以前偷懒一直没用心去记-_-’)。终于痛定思痛,决定好好整理记录下来,并养成好习惯。。。

以下按照不同数据容器类型,整理出了可用的数据拼接方法。

(一) List

python为列表提供的拼接方法,首先是append和extend。其中append是把参数整个作为元素回到原列表的末尾作为一个元素,而extend则是把参数列表的所有元素作为原列表的新元素追加到末尾。另外有一点需注意的是,append和extend调用的结果是直接修改原列表,无返回值。 例子如下:
List的append,extend方法演示
除此以外,python中的+和+=操作符,作用在列表上,也具有拼接的功能。其中,+=的实现的功能和extend一样,而+则和extend略有不同:其返回的是一个新列表,而非原列表。例子如下:
在这里插入图片描述

(二) DataFrame

DataFrame提供的拼接功能要更为丰富一些。大抵可以概括为非条件拼接和条件拼接两种(非条件拼接条件拼接是我为了便于理解记忆自己杜纂的,因此莫问出处)。

1. 非条件拼接

非条件拼接包括append和concat。

(1) append

append实现的功能和List的+功能类似,即执行结果是返回一个新的DataFrame,且不改变原DataFrame。
在这里插入图片描述
此外,DataFrame合并涉及到index的处理:置ignore_index=True(默认False)可以无视原index并在合并后新建index;相反的,置verify_integrity=True(默认False)则可以使得合并遇到重复index时报错。

(2) pandas.concat

concat比append灵活,因为concat既可在行方向扩展,也可在列方向扩展。控制扩展方向的参数为axis(默认为0)。
此外,对于拼接的DataFrame行列没能对齐的情况,concat通过参数join提供了两种拼接方法outer(默认)和 inner。前者将使用NaN填充空缺的数据域,后者则将所有有空缺的数据域(行和列)删除。
在这里插入图片描述
concat也有ignore_index和verify_integrity参数。

2. 条件拼接

之所以叫它条件拼接,是因为它需要按某个指定的条件进行拼接,实现的效果很象SQL的表关联查询。
条件拼接有merge和join,前者是pandas的方法,后者是DataFrame的方法。

(1) pandas.merge

需要指定关联的列,使用on指定。关联列不只一个列的,使用列表方式on=[colName1, colName2,…]。关联的方式,和SQL差不多,默认为inner,可选left,right,outer。
在这里插入图片描述
方法merge参数较多,更详细的用,可到pandas官网查看:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html?highlight=merge#pandas.DataFrame.merge

(2) join

join也需要指定关联的列。需要特别注意的一点是,其关联的方式默认为left而不是inner,这一点有别于merge,需要特别注意。
在这里插入图片描述
方法join参数较多,更详细的用法,可到pandas官网查看:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html#pandas.DataFrame.join

(三) array

numpy的数组合并方法很多(其实感觉有点多过头了……)。

1. numpy.append

append方法的参数比较少,关于参数,有两点需要注意:
(1)参数axis的值和选取,如何与对数组进行拼接的维度进行对应;
(2)确保进行拼接的两个数组,除了进行拼接的维度以外,其他维的长度都是相同的。
在这里插入图片描述
当数据量很大时,使用append方式会很慢,因为每次都会把之前的数组复制给一个新的数组。
另外,append返回的数组,其维数将和原数组一致。无法通过append方法拼接出更高维的数组。

2. numpy.concatenate

concatenate的使用方法及调用结果和append差不多,唯一不同的,是concatenate的axis默认值为0.
在这里插入图片描述
concatenate的效率高于append,这种优势在大数据量情况下更加明显。

3. numpy.stack

stack用于矩阵堆叠,在参与堆叠的矩阵多于一个时,堆叠结果将必然增加一个维度。参数axis用于控制在哪两个维度之间增加新维度。
在这里插入图片描述

4. numpy.vstack & numpy.hstack & dstack

vstack是沿着第一个维度进行拼接,相当于concatenate取axis=0;hstack是沿着第二个维度进行拼接,相当于concatenate取axis=1;dstack是沿着第三个维度进行拼接,相当于concatenate取axis=2.
在这里插入图片描述

5. numpy.c_ & numpy.r_

r_效果同vstack,c_效果则和hstack相同,但调用方法略有不同。r_和c_并不是函数的方法,因此不使用括号,而是使用方括号。
另外看到网上有人有人说r_和c_的性能和vstack等并不相同,但没找到详细说明,因此先Mark着,以后再补充。
在这里插入图片描述

2018-04-26 09:42:48 T_27080901 阅读数 5545
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108100 人正在学习 去看看 林男

前言

GitBook:https://theonegis.gitbook.io/geopy/

优酷视频:http://v.youku.com/v_show/id_XMzU2NjAzMTk0NA==.html?spm=a2hzp.8253876.0.0&f=51736885

YouTube视频:https://www.youtube.com/channel/UCdRMZUyzcVLWZoWItuH2PhQ

百度网盘:https://pan.baidu.com/s/1moFYT1lt-YazLGY9AGmm-g


如果有热心网友对我的该系列博客《Python空间数据处理实战》有什么好的建议的话,比如需要增加哪些内容,写作风格上的改进等,可以直接给我留言或者发邮件,谢谢大家,希望我的分享能帮助到一些热衷GIS与RS数据处理的童鞋!


Python基础

开发环境搭建及基本数据类型

运算符及字符串

序列与字典

流程控制语句

函数

面向对象编程初识

面向对象编程高级

Python科学计算

空间数据处理环境搭建

空间数据基础

空间参考

地图投影

空间数据

GDAL空间数据处理

GDAL简介

栅格数据组织

矢量数据组织

GDAL数据基本操作

打开栅格影像的正确方式

栅格数据格式转换

栅格数据创建与保存

读取HDF或者NetCDF格式的栅格数据

栅格数据投影转换

栅格数据裁剪

打开Shapefile文件的正确方式

创建Shapefile文件并写入数据

矢量数据投影转换

GDAL常用命令工具

Fiona矢量数据处理

Fiona简介及Shapefile数据读取

使用Fiona创建Shapefile矢量数据

Rasterio栅格数据处理

使用Rasterio读取栅格数据

使用Rasterio创建栅格数据

使用Rasterio做投影变换

矢量数据处理

属性操作

基本空间分析

空间数据库

网络分析

栅格数据处理

基本数据预处理

命令行工具

脚本编程

高级应用

2017-07-09 23:56:16 u011371629 阅读数 189
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108100 人正在学习 去看看 林男

Python基础

每门编程语言都会把能够处理的数据分成几大类,其中有一些数据类型能够直接被编程语言所理解,这种我们一般将它称之为基础数据类型。
但是在我们使用一个程序的时候,并非只有基础类型。我们还有一些,例如文本、图形、音频、视频、网页等各种各样不同的数据类型,不同的数据,我们要根据它的特性使用基础数据类型来进行组合。

基础数据类型

整数

Python可以处理任意大小的整数(包括正负整数),在程序中的表示方法和数学上的写法一模一样。
在Python中,任何一个不带小数点的数值,我们都将其称为整数;任何带有小数点的数值,我们称之为浮点数。
例如:

1,100,-8080,0等等

计算机由于使用二进制,所以,有时候使用十六进制表示整数比较方便,十六进制使用0x前缀和0-9,a-f表示。
例如:

0xff,0xa5b4c3d2,等待

浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学计数法表示时,一个浮点数的小数点位置是可变的。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,除法运算会四舍五入。

字符串

字符串是以单引号(‘)或者双引号(“)括起来的任意文本,比如’abc’,”xyz”等等。请注意,”或”本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这三个字符。如果’本身也是一个字符,那就可以用”“括起来,比如:
“I’m OK”包含的字符串是I, ‘, m, 空格, O, K这六个字符
如果字符串内部既包含’,又包含”怎么办?可以使用转移字符,在需要转义的符号前面加反斜杠即可’\’。
‘I\’m \”OK\”!’表示的字符串是:I’m “OK”!
转义字符\可以转义很多字符,比如
\n表示换行
\t表示制表符,字符
\本身也要转义,所以
\表示的字符是\,可以在Python的交互式命令行用print()打印字符串看看:

>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r”表示,”内部的字符串默认不转义,如下所示:

>>> print('\\\t\\')
\   \
>>> print(r'\\\t\\')
\\\t\\

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用”’…”’的格式表示多行内容,示例如下:

>>> print('''line1
line2
line3''')
line1
line2
line3

我们的r还可以和”’…”’结合使用,示例如下:

>>> print(r'''line1
li\ne2
line3''')
line1
li\ne2
line3
>>> print('''line1
li\ne2
line3''')
line1
li
e2
line3
>>> 

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False。

and

and运算是与运算,只有所有都为True,and运算结果才是True。

or

or运算是或运算,只要其中有一个为True,or运算结果就是True。

not

not运算是非运算,它是一个单目运算符,把True变为False,把False变为True。

None

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

2018-07-14 15:25:21 rosetta 阅读数 129
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108100 人正在学习 去看看 林男

前言

本系列博文为Python编程精粹和要点,相关内容没有系统性可言,仅记录我在使用python过程觉得最关键和常用的东西,并不是python编程入门笔记,适合有一定编程经验的朋友。

Python字符串编程

Python经常需要处理文本字符串,依据本人最近的经验,无非要完成数据读取、字符串分隔、过滤(去掉空行,去掉首尾空格等)、查找等操作,下面来看看具体是如何使用的。

  1. 打开文件,对匹配的目标行进行处理,保留其它行,最后存为新文件

    filename = "test.log"
    newfilename = filename+"_bak"
    keyword= "server nginx"
    newlines = "" #用于存放新字符串文本,最后保存到文件中
    
    with open(filename, 'r', encoding='utf-8') as f:
       for line in f.readlines():
           if(keyword in line): #对有keyword的行做处理
               i+=1
               newline = line.replace("\n","")+" id %d" % (i) +"\n"#替换\n为空格,并在其后面加入相关字符串
               newlines += newline
            else:#其它行不做特殊处理
               newlines += line
    
    with open(newfilename, "w") as f:#最后写到新文本中
        f.writelines(newlines)
  2. 对字符串分隔,并挑选出感兴趣的字段

    分隔使用split()函数,前提是字符串的格式是固定的,如果不是固定,那么很可能在处理其它串的时间出现bug。

    split()返回的结果是分隔后的子字符串列表。

    假如有这么一串字符串,要提取出域名位置的内容https://blog.csdn.net/rosetta应该怎么办呢?

    In [1]: string1='Apr  3 04:00:05 127.0.0.1 haproxy[226376]: 132.12.43.6:57669/18.123.134.89:80 0/0/7/44/51 404 600/249 {|Mozilla/5.0||https://blog.csdn.net/rosetta} "GET /test.jpg HTTP/1.1"'
    In [2]: string1.split()#默认以空格分隔
    Out[2]: 
    ['Apr',
    '3',
    '04:00:05',
    '127.0.0.1',
    'haproxy[226376]:',
    '132.12.43.6:57669/18.123.134.89:80',
    '0/0/7/44/51',
    '404',
    '600/249',
    '{|Mozilla/5.0||https://blog.csdn.net/rosetta}',
    '"GET',
    '/test.jpg',
    'HTTP/1.1"']
    
    In [3]: string1.split('|')#指定以竖线分隔
    Out[3]: 
    ['Apr  3 04:00:05 127.0.0.1 haproxy[226376]: 132.12.43.6:57669/18.123.134.89:80 0/0/7/44/51 404 600/249 {',
    'Mozilla/5.0',
    '',
    'https://blog.csdn.net/rosetta} "GET /test.jpg HTTP/1.1"']
    
    In [21]: string1.split(" ",3)#只对前面三个空格分隔,后面的不分隔
    Out[21]: 
    ['Apr',
    '',
    '3',
    '04:00:05 127.0.0.1 haproxy[226376]: 132.12.43.6:57669/18.123.134.89:80 0/0/7/44/51 404 600/249 {|Mozilla/5.0||https://blog.csdn.net/rosetta} "GET /test.jpg HTTP/1.1"']
    
    In [27]: string1.split()[-4]#获取倒数第四个分片
    Out[27]: '{|Mozilla/5.0||https://blog.csdn.net/rosetta}'
    
    In [28]: string1.split()[-4].split('|')#对第四个分片分隔
    Out[28]: ['{', 'Mozilla/5.0', '', 'https://blog.csdn.net/rosetta}']
    
    In [29]: string1.split()[-4].split('|')[-1]#取最后一个
    Out[29]: 'https://blog.csdn.net/rosetta}'
    
    In [30]: string1.split()[-4].split('|')[-1].split('}')#以右大括号分隔
    Out[30]: ['https://blog.csdn.net/rosetta', '']
    
    In [31]: string1.split()[-4].split('|')[-1].split('}')[0]#取第一个
    Out[31]: 'https://blog.csdn.net/rosetta'

    到此,域名已经取出,目标已经达到

  3. 去除左右空格

    如下字符串,以竖线分隔后的字符串前后会含有空格

    In [32]: string2="start |Mozilla/5.0| www.baidu.com| blog.csdn.net/rosetta"
    In [34]: string_list = string2.split('|')
    Out[34]: ['start ', 'Mozilla/5.0', ' www.baidu.com', ' blog.csdn.net/rosetta']
    
    In [69]: new_list = []
       ...: for x in string_list:#需要遍历list,然后调用strip()去除空格
       ...:     new_list.append(x.strip())
       ...:     
    
    In [70]: new_list
    Out[70]: ['start', 'Mozilla/5.0', 'www.baidu.com', 'blog.csdn.net/rosetta']
  4. 拼接

    对目标字符串的部分内容进行拼接

    In [72]: string3='Apr  3 04:00:05 127.0.0.1'#取本字符串以空格分隔后的前三段,拼接成新字符串
    
    In [73]: string3.split()
    Out[73]: ['Apr', '3', '04:00:05', '127.0.0.1']
    
    In [75]: ' '.join(string3.split()[0:3])
    Out[75]: 'Apr 3 04:00:05'
    

好了,如果能对以上内容可以达到随心所用的话,python的字符串处理基本上问题就不大了,一些其它常用的字符串操作,比如replace()替换,大小写转换,字母数字判断等等内容可参考《Python学习手册》第四版第7章字符串。

参考书籍:

《Python编程手册》第四版

没有更多推荐了,返回首页