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\)的一些\(rc settings\).更具体一些说,它包含\(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(date_string, 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))

  输出为\(<class 'dict'>\),说明转化为字典对象

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\)的设置过于繁琐
  因此推出了\(plotly \quad express\),作为\(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 @ 2022-11-22 12:06  acmloser  阅读(21)  评论(0编辑  收藏  举报