数据分析 | Python数据分析简读

admin 2024年8月2日14:19:19评论12 views字数 11630阅读38分46秒阅读模式

1、Python环境搭建与使用

1.Anaconda安装和使用

Anaconda是一个集成的Python数据科学环境,简单的说,Anaconda除了有Python外,还安装了180多个用于数据分析的第三方库,而且可以使用conda命令安装第三方库和创建多个环境。相对于只安装Python而言,避免了安装第三方库的麻烦。

网站:

anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

Python版本

Conda list查看包

环境管理

数据分析 | Python数据分析简读

2.Jupyter notebook使用

以管理员身份运行:

http://localhost:8888/?token=d2b088abe80452ce8412df2b4d1dcce0993b806b756b368d

2、Numpy入门与实践

Ndarray多维数组

NumPy库是用于科学计算的一个开源Python扩充程序库,是其他数据分析包的基础包,它为Python提供了高性能的数组与矩阵运算处理能力。本节将主要讲解ndarray多维数组的创建方法、数组的属性和数组的简单操作。

1.1 创建数组

函数

使用说明

arange

ones

类似于内置的range函数,用于创建数组

创建指定长度或形状的全1数组

ones_like

己另一个数组为参考,根据其形状和dtype创建全1数组

zeros、zeros_like

类似于 ones、ones_ like, 创建全0数组

empty、empty_like

同上,创建没有具体值的数

eye、identity

创建正方的N*N单位矩阵

1.2 数组对象属性

数据分析 | Python数据分析简读

1.3 数组类型与变换

dtype、astype

数组重塑、合并,拆分,转置

1.4 随机函数

数据分析 | Python数据分析简读

数组的索引和切片

索引、切片、布尔索引、花式索引

数组运算

数据分析 | Python数据分析简读

综合案例——图像变换

数据分析 | Python数据分析简读

3、pandas入门与实践

pandas数据结构

Series数据、DataFrame数据

索引对象:

数据分析 | Python数据分析简读

2 索引操作

重新索引、更换索引、索引和选取(iloc,loc,ix)、操作行和列

3 数据运算

算术运算、函数应用和映射、排序、总与统计、唯一值和值计数

3.2  函数应用和映射

在数据分析实战中,常常会对数据进行较复杂的数据运算,这时需要定义函数。定义好的函数可以应用到pandas数据中,其中有三种方法:map函数,将函数套用在Series的每个元素中;apply函数,将函数套用到DataFrame的行与列上;applymap函数,将函数套用到DataFrame的每个元素上

4 层次化索引

算层次化索引、重排分级顺序、汇总统计

5 pandas可视化

线形图、柱状图、直方图和密度图、散点图

6 综合案例:小费数据集

        数据分析的流程通常情况下分为五步。第一步:收集数据,在这步中,需要对收集的数据有一定的认知,各字段的含义和背景知识都要有着足够的理解;第二步:定义问题,根据各自的行业和业务知识,对数据定义多个待解决的问题;第三步:数据清洗与整理,由于各种问题,获取的数据不够干净,需通过各种手段对数据进行清洗与整理,以便得到准确的分析结果;第四步:数据探索,通过可视化等手段,对数据进行分析和探索,得出结论;第五步:数据展示,这部分用于输出,或撰写数据分析报告、或汇报给上级、或绘制PPT。

4、外部数据读取与存储

文本数据的读取和存储(CSV,TXT)

1. 文本数据读与存

数据分析 | Python数据分析简读

JSON和Excel数据读取和存储

read_json、to_json、read_excelto_excel

数据库的读取与存储

连接数据库、读取数据库、存储数据库

5、数据清洗与整理

数据清洗

处理缺失值、移除重复数据、替换值数据转换、检测异常值

数据合并和重塑

merge合并、数据重塑

字符串处理

字符串方法、正则表达式

综合案例

6、数据分组与聚合

数据分组

GroupBy
按列名分组
按列表或元组分组
按字典分组
按函数分组
数据分析 | Python数据分析简读

聚合运算

聚合函数
多函数应用
数据分析 | Python数据分析简读

分组运算

apply方法

数据透视表

透视表
交叉表

综合案例:巴尔的摩公务员工资数据集

7、matplotlib可视化

线形图

基本使用

颜色与线型

点标记

柱状图

基本使用

刻度与标签

图例

其他基本图表

散点图

直方图

综合案例:星巴克店铺数据集

图表布局

文本注解

样式与字体

8、地图可视化与seaborn可视化

地图可视化

basemap安装和使用
区域缩放与绘图
综合案例:美国人口分布图

seaborn可视化

样式与分布图
分类图

basemap地图绘制

地图绘制也是数据可视化的一部分,常用的地图绘制库为basemap工具包,其为matplotlib的子包。本章将讲解如何利用whl文件在Python3环境下安装basemap;学会使用basemap绘制地图;学会缩放区域和绘制散点图;通过综合案例,巩固basemap的绘制地图方法和技巧。
本章主要涉及到的知识点有:

basemap安装:学会basemap的安装方法。
basemap使用:学会利用basemap绘制简单地图。
缩放区域与绘图:学会通过定位经纬度缩放区域与绘制散点图。
综合案例:通过综合案例,巩固basemap的绘制地图方法和技巧。

basemap的使用

basemap是一个强大的绘制地图工具包。本节将讲解如何安装和使用basemap,结合matplotlib,绘制地图。

basemap安装

在anaconda的python3环境中,通过conda命令安装basemap会导致失败,这里通过该网站(https://www.lfd.uci.edu/~gohlke/pythonlibs/)
下载对应版本的Pyproj和basemap的whl文件,如图12.1和12.2所示。

数据分析 | Python数据分析简读
图12.1  Pyproj下载

数据分析 | Python数据分析简读
图12.2  basemap下载

        在anaconda环境中,切换到这两个whl文件的路径下,按顺序通过pip依次安装Pyproj和basemap文件,代码如下,安装Pyproj,如图12.3所示,代表Pyproj安装成功。

h:
cd H:python数据分析数据
pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl

数据分析 | Python数据分析简读
图12.3  Pyproj安装

以同样的方法安装basemap,代码如下,如图12.4所示,安装basemap。

h:
cd H:python数据分析数据
pip install basemap-1.1.0-cp36-cp36m-win_amd64.whl

数据分析 | Python数据分析简读
图12.4  basemap安装

如图12.5所示,通过from mpl_toolkits.basemap import Basemap代码调用该库,发现程序可以运行,代表basemap库安装成功。
数据分析 | Python数据分析简读
图12.5  安装成功

basemap使用

首先,导入需要的第三方库,通过basemap初始化一个地图对象,通过drawcoastlines绘制海岸线,代码如下。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
%matplotlib inline

map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105, resolution='l', area_thresh=1000.0) #初始化地图对象
map1.drawcoastlines() #绘制海岸线

projection参数是用于定义地图的投影方式;lat_0和lon_0是指定地图的中心坐标,这里的值为美国的中心坐标;resolution参数设置绘制边界的精度,l为低精度;area_thresh参数为阈值,低于该阈值的就不会被绘制。绘制地图如图12.6所示。注意:更多参数详情可参考http://matplotlib.org/basemap/。

数据分析 | Python数据分析简读
图12.6  基本地图
通过drawcountries方法绘制国家边界,代码如下,如图12.7所示。

map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105, resolution='l', area_thresh=1000.0) 
map1.drawcoastlines() #绘制海岸线
map1.drawcountries() #绘制国家

数据分析 | Python数据分析简读
图12.7  绘制国家

其他常见的绘制方法如下:

drawmapboundary()   #绘制边界
drawstates() #绘制州
drawcounties() #绘制县
通过fillcontinents方法为大陆填充颜色,代码如下,如图12.8所示。
map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105,
resolution='l', area_thresh=1000.0)
map1.drawcoastlines() #绘制海岸线
map1.drawcountries() #绘制国家
map1.fillcontinents(color='blue',alpha=0.5) #填充颜色

数据分析 | Python数据分析简读
图12.8  填充大陆颜色

通过drawmeridians和drawparallels方法绘制经线和纬线,代码如下,如图12.9所示。

map1 = Basemap(projection='ortho', lat_0=90, lon_0=-105,
resolution='l', area_thresh=1000.0)
map1.drawcoastlines() #绘制海岸线
map1.drawcountries() #绘制国家
map1.drawmapboundary() #绘制边界
map1.fillcontinents(color='blue',alpha=0.5) #填充颜色

map1.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map1.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

数据分析 | Python数据分析简读
图12.9  绘制经度和纬度

更换projection参数,换为robin坐标,可将图绘制为平面坐标,代码如下,如图12.10所示。

map1 = Basemap(projection='robin', lat_0=90, lon_0=-105,
resolution='l', area_thresh=1000.0)
map1.drawcoastlines() #绘制海岸线
map1.drawcountries() #绘制国家
map1.drawmapboundary() #绘制边界
map1.fillcontinents(color='blue',alpha=0.5) #填充颜色

map1.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map1.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

数据分析 | Python数据分析简读
图12.10  平面坐标

缩放区域与绘图

在实际案例中,需对特定国家或地区进行绘制地图,这样就需要通过llcrnrlon、llcrnrlat、urcrnrlon和urcrnrlat指定左下角经纬度和右上角经纬度,代码如下,如图12.11所示。

map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州
map2.fillcontinents(color='blue',alpha=0.5) #填充颜色

map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

数据分析 | Python数据分析简读
图12.11  缩放区域

通过坐标定位,可以在地图上绘制图形,代码如下,如图12.12所示。

map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州
map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

lon = -74
lat = 40.43
x,y = map2(lon, lat) #映射坐标
map2.plot(x, y, 'ro', markersize=8) #绘制散点图

数据分析 | Python数据分析简读

图12.12  绘制散点图

通过matplotlib库的text方法,为散点加入文本注释。

map2 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map2.drawcoastlines() #绘制海岸线
map2.drawcountries() #绘制国家
map2.drawmapboundary() #绘制边界
map2.drawstates() #绘制州

map2.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map2.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

lon = -74
lat = 40.43
x,y = map2(lon, lat) #映射坐标
map2.plot(x, y, 'ro', markersize=8) #绘制散点图
plt.text(x,y,'New York') #文本注释

数据分析 | Python数据分析简读
图12.13  文本注释

basemap综合示例

本节将讲解如何通过basemap绘制区域与全球地图,结合具体案例,讲解地图的绘制方法和技巧。

美国人口分布

通过该网站:

(https://github.com/plotly/datasets/blob/master/2014_us_cities.csv)

下载2014年美国城市的人口数据,读取数据,如图12.14所示,数据总共有四个字段,城市名称、城市人口和经纬度坐标。
数据分析 | Python数据分析简读

图12.14  美国人口数据

通过以下代码,绘制前180个城市的美国人口分布图,如图12.15所示。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
%matplotlib inline

plt.style.use('ggplot')
plt.figure(figsize=(10,6))

map3 = Basemap(projection='stere', lat_0=90, lon_0=-105,
llcrnrlon=-118.67, llcrnrlat=23.41,
urcrnrlon=-64.5, urcrnrlat=45.44,
resolution='l', area_thresh=1000.0)
map3.drawcoastlines() #绘制海岸线
map3.drawcountries() #绘制国家
map3.drawmapboundary() #绘制边界
map3.drawstates() #绘制州
map3.drawcounties() # 绘制县

map3.drawmeridians(np.arange(0, 360, 30)) #绘制经线
map3.drawparallels(np.arange(-90, 90, 30)) #绘制纬线

lat = np.array(pop_data["lat"][0:180]) # 获取维度之维度值
lon = np.array(pop_data["lon"][0:180]) # 获取经度值
pop = np.array(pop_data["pop"][0:180],dtype=float) # 获取人口数,转化为numpy浮点型
size = (pop/np.max(pop))*1000 # 计算每个点的大小

x,y = map3(lon,lat)
map3.scatter(x,y,s=size)

plt.title('Population distribution in America') #加标题

代码分析:
(1)1~5行
导入程序需要的库。
(2)7~8行
设置图表的样式为ggplot,并设置图表的长宽比。
(3)10~21行
定义basemap对象,并绘制出美国的地图底图和经纬度。
(4)23~29
获取前180个数据,并绘制散点图。
数据分析 | Python数据分析简读
图12.15  美国人口分布图
注意:人口如果不转化为numpy浮点型,散点图不会显示出大小不一。

全球地震可视化

通过美国地震局官网,下载过去一周的地震数据,如图12.16所示。

数据分析 | Python数据分析简读
图12.16  过去一周地震数据下载

读取数据,如图12.17所示,该数据有很多字段,但本次分析中用到的就是经纬度字段和mag字段(震级)。
数据分析 | Python数据分析简读
图12.17  地震数据

对这三个字段查看缺失值,如图12.18所示,mag字段有1个缺失值。
数据分析 | Python数据分析简读
图12.18  查看缺失值

通过过滤剔除到这个缺失值,如图12.19所示。

数据分析 | Python数据分析简读
图12.19  过滤缺失值

通过以下代码,绘制地震分布图,如图12.20所示。

数据分析 | Python数据分析简读
图12.20  全球地震分布图(1)

根据震级大小,绘制散点不一的地震分布图,如图12.21所示。

plt.style.use('ggplot')
plt.figure(figsize=(10,6))

map5 = Basemap(projection='robin', lat_0=39.9, lon_0=116.3,
resolution = 'l', area_thresh = 1000.0)

map5.drawcoastlines()
map5.drawcountries()
map5.drawmapboundary()

map5.drawmeridians(np.arange(0, 360, 30))
map5.drawparallels(np.arange(-90, 90, 30))

size = 2 #初始化大小
for lon, lat, mag in zip(list(eq_data['longitude']), list(eq_data['latitude']), list(eq_data['mag'])):
x,y = map5(lon, lat)
msize = mag * size #不同震级大小不一样
map5.plot(x, y, 'ro', markersize=msize)

数据分析 | Python数据分析简读
图12.21  全球地震分布图(2)

通过以下代码,定义一个函数,可通过不同震级绘制颜色不同的地图,如图12.22所示。

def get_marker_color(mag):
if mag < 3.0:
return ('go')
elif mag < 5.0:
return ('yo')
else:
return ('ro') #定义设置颜色函数

plt.style.use('ggplot')
plt.figure(figsize=(10,6))

map6 = Basemap(projection='robin', lat_0=39.9, lon_0=116.3,
resolution = 'l', area_thresh = 1000.0)

map6.drawcoastlines()
map6.drawcountries()
map6.drawmapboundary()

map6.drawmeridians(np.arange(0, 360, 30))
map6.drawparallels(np.arange(-90, 90, 30))

size = 2
for lon, lat, mag in zip(list(eq_data['longitude']), list(eq_data['latitude']), list(eq_data['mag'])):
x,y = map6(lon, lat)
msize = mag * size
map6.plot(x, y, get_marker_color(mag), markersize=msize) #调用函数

plt.title('Earthquakes')

数据分析 | Python数据分析简读
图12.22  全球地震分布图(3)

pyecharts地图绘制

pyecharts也可以轻松绘制出美观可交互的地图。本节将讲解如何利用pyecharts绘制不同地区的地图,通过Geo方法在地图上绘制散点图。

地图

利用pyecharts绘制地图,需要下载地图js文件,通过pip进行安装,如图12.23所示。

pip install echarts-countries-pypkg        #全球国家地图
pip install echarts-china-provinces-pypkg #中国省级地图
pip install echarts-china-cities-pypkg #中国市级地图

数据分析 | Python数据分析简读
图12.23  安装地图js
注意:安装好后记得重启jupyter notebook。
利用Map方法可绘制地图,代码如下。

value = [155, 78, 23, 65]
label = ["北京", "上海", "西藏", "广东"]
map1 = pyecharts.Map("全国地图示例")
map1.add("",label, value, maptype='china')
map1.render() #生成html文件
该add方法的参数如下,maptype设置地图类型,支持china、world、中国省市名称等;is_roam可缩放地图;is_map_symbol_show显示地图红点。
add(name, attr, value,
maptype='china',
is_roam=True,
is_map_symbol_show=True, **kwargs)

绘制的中国地图如图12.24所示。
数据分析 | Python数据分析简读
图12.24 全国地图(1)
设置is_label_show=True,可以显示各省份名称,代码如下,如图12.25所示。

value = [155, 78, 23, 65]
label = ["北京", "上海", "西藏", "广东"]
map1 = pyecharts.Map("全国地图示例", width=1200, height=600)
map1.add("",label, value, maptype='china', is_label_show=True)
map1.render() #生成html文件

数据分析 | Python数据分析简读
图12.25  全国地图(2)
结合Visualmap可以美化地图,根据值显示不同颜色,代码如下,如图12.26所示。

value = [155, 78, 23, 65]
label = ["北京", "上海", "西藏", "广东"]
map1 = pyecharts.Map("全国地图示例", width=1200, height=600)
map1.add("",label, value, maptype='china', is_visualmap=True,
visual_text_color='#000')
map1.render() #生成html文件

数据分析 | Python数据分析简读
图12.26  全国地图(3)
修改maptype参数可以绘制省级地图,代码如下,如图12.27所示。

value = [233, 102, 41, 82]
attr = ['武汉市', '咸宁市', '黄冈市', '黄石市']
map1 = pyecharts.Map("湖北省地图")
map1.add("", attr, value, maptype='湖北', is_visualmap=True,
visual_text_color='#000')
map1.render()

数据分析 | Python数据分析简读
图12.27  湖北省地图
修改maptype参数为world可以绘制世界地图,代码如下,如图12.28所示。

value = [46, 54, 45, 82, 45]
attr= ["China", "Canada", "Brazil", "Russia", "United States"]
map1 = pyecharts.Map("世界地图", width=1200, height=600)
map1.add("", attr, value, maptype="world", is_visualmap=True,
visual_text_color='#000', is_map_symbol_show=False)
map1.render()

数据分析 | Python数据分析简读
图12.28  全球地图

地图坐标系

地图坐标系组件用于地图的绘制,支持在地图上绘制散点图,线集。利用Geo方法可在地图上绘制散点图等,代码如下。

data = [
('上海', 78),('武汉', 56),('长沙', 45),('北京', 65),('苏州', 32),('盐城', 15),
('南昌', 87),('青岛', 45),('广州', 78),('拉萨', 12),('桂林', 21),('西安', 42),
('济南', 12)]

geo = pyecharts.Geo("地图绘制案例一",
title_pos="center", width=1200,
height=600)
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 100], visual_text_color="#fff",
geo_normal_color="#FFFFFF",
symbol_size=15, is_visualmap=True)
geo.render()

该add方法的参数如下,type设置图例类型,'scatter', 'effectScatter', 'heatmap'可选;
symbol_size为散点图大小;
border_color设置地图边界颜色;
geo_normal_color为正常情况下地图区域颜色;
geo_emphasis_color为高亮下地图区域的颜色。

add(name, attr, value,
type="scatter",
maptype='china',
symbol_size=12,
border_color="#111",
geo_normal_color="#323c48",
geo_emphasis_color="#2a333d",
is_roam=True, **kwargs)

绘制的地图如图12.29所示。
数据分析 | Python数据分析简读
图12.29  案例一

修改type参数,更改为heatmap,代码如下,如图12.30所示。

data = [
('上海', 78),('武汉', 56),('长沙', 45),('北京', 65),('苏州', 32),('盐城', 15),
('南昌', 87),('青岛', 45),('广州', 78),('拉萨', 12),('桂林', 21),('西安', 42),
('济南', 12)]

geo = pyecharts.Geo("地图绘制案例二",
title_pos="center", width=1200,
height=600)
attr, value = geo.cast(data)
geo.add("", attr, value, type='heatmap', visual_range=[0, 100], visual_text_color="#fff",
geo_normal_color="#FFFFFF",
symbol_size=15, is_visualmap=True)
geo.render()

数据分析 | Python数据分析简读
图12.30  案例二

9、pyecharts可视化

pyecharts - A Python Echarts Plotting Library built with love.

【宝藏级】PyEcharts 超详细的使用指南_pyecharts官网_奇怪的大象的博客-CSDN博客

基础图表

pyecharts安装

散点图

折线图

柱状图

其他图表

饼图、箱形图

地图绘制

地图、地理坐标系

10、时间序列

datetime

datetime构造

数据转换

数据分析 | Python数据分析简读

时间序列基础

构造、索引与切片

日期

日期范围、频率与移动

数据分析 | Python数据分析简读

频率转换与重采样

重采样、降采样和升采样

数据分析 | Python数据分析简读

重采样示例图

数据分析 | Python数据分析简读

原文始发于微信公众号(安全君呀):数据分析 | Python数据分析简读

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月2日14:19:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   数据分析 | Python数据分析简读http://cn-sec.com/archives/3025660.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息