2.下载数据 16章相关问题

1.csv相关函数

1.1 csv.reader()

image

  在书上并没有添加b标志参数,这里先不涉及,我们先讨论返回值

import csv
filename = 'data/sitka_weather_07-2018_simple.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
print(header_row)

  返回值是reader对象,这里的next()函数主要返回reader读取的下一行,返回值是一个以字符串为元素的列表(默认).如果我们用for循环遍历reader默认也是返回以字符串为元素的列表(默认)

for line in reader:
print(line)

  返回值,只列部分.

['USW00025333', 'SITKA AIRPORT, AK US', '2018-07-01', '0.25', '', '62', '50']
['USW00025333', 'SITKA AIRPORT, AK US', '2018-07-02', '0.01', '', '58', '53']
['USW00025333', 'SITKA AIRPORT, AK US', '2018-07-03', '0.00', '', '70', '54']

2.matplotlib相关函数

2.1 rcparams

  这是一个类字典的变量,用于存储matplotlib的一些rcsettings.更具体一些说,它包含matplotlibrc文件中的所列的(全部?绝大多数?)属性,用rxParams可以控制Matplotlib中的几乎所有属性,包括(但不限于):图像大小(figure size), DPI(Dots Per Inch,表示分辨率), 线宽(line width), 颜色color and 风格style等待

2.1.1 matplotlibrc文件在哪儿

  我们可以用如下代码看matplotlibrc文件的路径:

print(mpl.matplotlib_fname())

  matplotlibrc里将可以设置的属性分了类,每个类都有自己的属性,详见大佬的博客
  我们设置中文时,就是修改属性值(原本配置文件中设置了缺省值)

#设置字体格式
plt.rcParams['font.sans-serif']=['SimHei']
#正常显示负号
plt.rcParams['axes.unicode_minus'] = False

2.2 autofmt_xdate函数

  改变x轴坐标的显示方法可以斜着表示,不用平着挤一堆

#设置横坐标格式
fig.autofmt_xdate()

2.3 plotly和matplotlib

  两个是不同的python库,但是plotly是可交互,基于浏览器的绘图库,主打功能是绘制在线可交互的图表,而Matplotlib只能生成静态的图表

3.基本类型函数

3.1 datetime

  这里是涉及了一个函数strptime(datestring,format),将格式字符串转换为datetime对象,和java里的有点像

print(datetime.strptime("2017-07-16 18:06:19", "%Y-%m-%d %H:%M:%S"))
#2017-07-16 18:06:19

4.Json相关函数

4.1 load函数

  json.load()用于从json文件中读取数据,将数据转化为python能处理的格式。

filename = 'data/eq_data_1_day_m1.json'
with open(filename) as f:
#将json转为Python能处理的数据格式
all_eq_data = json.load(f)
print(type(all_eq_data))

  输出为<classdict>,说明转化为字典对象

4.2 dump函数

  把python对象转换成json对象生成一个fp的文件流,和文件相关,没有返回值,json对象存储在文件.

with open(readable_file,'w') as f:
json.dump(all_eq_data,f,indent=4)

  indent:参数根据数据格式缩进显示,决定添加几个空格

5.plotly相关函数

  虽然plotly功能强大,却一直没有得到广泛应用,大部分py开发人员,还在使用陈旧的matplotlib,其中最重要的原因,就是plotly的设置过于繁琐
  因此推出了plotlyexpress,作为plot高级接口,这样可以简化操作.

5.1 scatter函数

  因为Plotly没有自己独立的线性图形函数,所以把线性图形与散点图形全部用这一个函数实现.
  下面是利用Ploty绘制散点图的一种方式.

fig = px.scatter(x=lons,y=lats,labels={'x':'经度','y':'纬度'},range_x=[-200,200],range_y=[-90,90],width=800,height=800,title='全球地震散点图')

  书上还记录了一种方式是使用pandas数据分析工具,需要创建一个对象DataFrame,这里构建DataFrame对象时,lons与经度对应,mags与震级对应,size设置散点尺寸.

data = pd.DataFrame(
data=zip(lons,lats,titles,mags),columns=['经度','纬度','位置','震级']
)
data.head()
fig = px.scatter(
data,
x='经度',
y='纬度',
range_x=[-200,200],
range_y=[-90,90],
width=800,
height=800,
title='全球地震散点图',
size='震级',
size_max=10,
color='震级'
)
fig.write_html('global_earthquakes2.html')
fig.show()

  但是这样当鼠标指向散点时,不会显示具体位置,我们配置hover_name=即可,hover_name是悬停参数,参考大佬博客
image

5.2 使用其他渐变

  plotly默认的渐变是下面这样的
image
  但我们可以修改渐变色的样式,在scatter函数里添加如下即可,这里的取值可以在渐变样式里选其一

color_continuous_scale='bluyl'

  使用如下代码查询所有渐变样式:

import plotly.express as px
for key in px.colors.named_colorscales():
print(key)
posted @   acmloser  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示