跟着小象学院学python,今天学习了读取csv数据输出可视化图片
老师的例子是window下的,我在linux下,系统字体跟例子的肯定不一样
原先其他输出可视化是用单独部件设置字体,这里输出用了plot()整体输出,没有fontproperties=my_font 这样参数
所以只能研究下设置整体参数为什么失效,很大概率应该是没有相应字体吧
往常查找了一下找到一个方法,打印出字体管理器找到的字体果然没有我想象的字体,找到了可用的字体
Alibaba PuHuiTi
好了,下面上代码 bottom10_aqi.csv
City,AQI,PM2.5/1h,PM10/h,CO/1h,NO2/1h,O3/1h,O3/8h,SO2/1h
邯郸,157,119,192,1.9,44,178,192,28
东莞,143,63,87,1.0,46,230,206,13
平度,141,81,119,2.6,28,207,203,14
鹤壁,133,54,105,1.27,39,151,195,19
德阳,129,37,80,0.65,26,196,190,10
平顶山,127,65,96,1.03,32,140,188,16
邢台,126,84,162,1.3,25,179,187,30
安阳,123,39,95,1.02,31,137,184,17
潍坊,120,73,133,1.46,24,161,180,19
莱西,120,63,103,2.8,25,200,180,18
然后就是python文件:
#!/usr/bin/python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontManager
def main():
"""
主函数
"""
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
print('字体信息:')
print(mat_fonts)
plt.rcParams['font.family'] = ['Alibaba PuHuiTi']
plt.rcParams['axes.unicode_minus'] = False
aqi_data = pd.read_csv('bottom10_aqi.csv')
print('基本信息:')
print(aqi_data.info())
print('数据预览(5行数据):')
print(aqi_data.head())
# 基本统计
print('PM2.5最大值:', aqi_data['PM2.5/1h'].max())
print('PM2.5最小值:', aqi_data['PM2.5/1h'].min())
print('PM2.5均值:', aqi_data['PM2.5/1h'].mean())
# 过滤数据
clean_aqi_data=aqi_data[aqi_data['PM2.5/1h']>80]
#print('PM2.5大于80:', clean_aqi_data)
new_aqi_data= clean_aqi_data.sort_values(by=['PM2.5/1h'])
print('PM2.5大于80 排序:\n', new_aqi_data)
new_aqi_data.plot(kind='bar', x='City', y='PM2.5/1h', title='空气质量PM2.5大于80的城市',
figsize=(8, 4))
plt.savefig('aqi_bar.png')
plt.show()
if __name__ == '__main__':
main()
如果文件赋予权限,双击就能执行了,输出图片
如果不能执行但是在终端里输入python xx.py 能执行,那说明第一行的解释器行尾有windows的换行符
把文件用linux格式另存一下,就可以了,相反如果是windows下第一行的解释器要改为windows路径的python.exe