python+numpy、pandas、matplotlib库分析UFO数据

#导入库与数据
import numpy as np
import matplotlib.pyplot as plt
import pandas as pddf1=pd.read_csv('nuforc_events.csv')
df=df1.dropna() #把包含缺失值的整行删除
# print(df.head)
year=np.array(df['Year'][0:109991])
month=np.array(df['Month'])
state=np.array(df['State'])
shape=np.array(df['Shape'])#获取字体
plt.rcParams['font.sans-serif']='Microsoft YaHei'
#查看表格中各数据的数据类型
df.dtypes

下面需解决的四个问题:

1·UFO出现频率最高的年、月

2·UFO出现频率最高的州

3·UFO出现形状次数最多的为哪一类

4·UFO出现的持续时间一般多长

1·分析UFO出现次数最多的年

#因1905年后记录数据较少,所以选取1905年后的时间数据
year=np.array(df['Year'][0:109991])year_df = pd.value_counts(year).sort_values(ascending=False)
# value_counts()是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。# 绘制柱状图
plt.figure(figsize=(12,8),dpi=100)
plt.ylabel('出现次数')
plt.title('UFO年份出现次数统计')
year_df.plot.bar()plt.show()


·value_counts()
是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值。
·df. sort_values()
作用:既可以根据列数据,也可根据行数据排序。
注意:必须指定by参数,即必须指定哪几行或哪几列;无法根据index名和columns名排序(由.sort_index()执行)

调用方式

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')

axis:{0 or ‘index’, 1 or ‘columns’}, default 0,默认按照列排序,即纵向排序;如果为1,则是横向排序。
by:str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名”。
ascending:布尔型,True则升序,如果by=[‘列名1’,‘列名2’],则该参数可以是[True, False],即第一字段升序,第二个降序。
inplace:布尔型,是否用排序后的数据框替换现有的数据框。
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面。

·df. sort_index()
作用:默认根据行标签对所有行排序,或根据列标签对所有列排序,或根据指定某列或某几列对行排序。
注意:df. sort_index()可以完成和df. sort_values()完全相同的功能,但python更推荐用只用df. sort_index()对“根据行标签”和“根据列标签”排序,其他排序方式用df.sort_values()。

调用方式

sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)

axis:0按照行名排序;1按照列名排序
level:默认None,否则按照给定的level顺序排列—貌似并不是,文档
ascending:默认True升序排列;False降序排列
inplace:默认False,否则排序之后的数据直接替换原来的数据框
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
na_position:缺失值默认排在最后{“first”,“last”}
by:按照某一列或几列数据进行排序,但是by参数貌似不建议使用
【原文链接:https://blog.csdn.net/weixin_43064185/article/details/105093891】


2·出现频率最高的月份

month=np.array(df['Month'])
month_df = pd.value_counts(month).sort_index(axis=0)#绘制折线图
plt.figure(figsize=(8,5),dpi=100)
plt.xlabel('月份')
plt.ylabel('出现次数')
plt.title('UFO出现月份分析')
month_df.plot(xticks=range(1,13))plt.show()


折线图绘制
x、y轴:fontsize的值则为文字的大小
labelsize的值为刻度数字的大小

调用方式

plt.plot(x, y, linestyle, linewidth, color, marker,markersize, markeredgecolor, markerfactcolor,markeredgewidth, label, alpha)

linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线。
linewidth:指定折线的宽度。
marker:可以为折线图添加点,该参数是设置点的形状。
markersize:设置点的大小。
markeredgecolor:设置点的边框色。
markerfactcolor:设置点的填充色。
markeredgewidth:设置点的边框宽度。
label:为折线图添加标签,类似于图例的作用。
labelsize的值为刻度数字的大小
fontsize的值则为文字的大小
【原文链接:https://blog.csdn.net/weixin_48615832/article/details/108466201】


3.出现频率最高的州

state=np.array(df['State'])
state1=pd.value_counts(state).sort_values(ascending=False)
state_df = state1[:25]#取出现次数前25的形状plt.figure(figsize=(9, 6), dpi=100)
plt.axes(aspect='equal')
plt.pie(x=state_df, pctdistance=0.9,startangle=45, autopct='%.1f%%', shadow=False,
)
plt.pie(state_df, radius=0.65, colors="w")#画一个白色圆,空心效果
#显示排前10的州的图例
plt.legend(state[:10], bbox_to_anchor=(0.9, 0.92))
plt.title('出现州次数占比图', fontsize=15)
plt.show()


饼状图

参数说明:
x:数组,绘制饼状图的数据。  
[explode]:默认值为None的可选参数。若非None,则是和x相同长度的数组,用来指定每部分的离心偏移量。  
[labels]:列表,指定每个饼块的名称,默认值None,为可选参数。  
[colors]:特定字符或数组,指定饼图的颜色,默认值None,为可选参数。  
[autopct]:特定字符,指定饼图中数据标签的显示方式,默认值None,为可选参数。  
[pctdistance]:浮点数,指定显示比例距离圆心的距离。默认值0.6,为可选参数。  
[labeldistance]:浮点数,指定每个扇形对应标签与圆心的距离,默认值1.1,为可选参数。  
[startangle]:浮点数,指定从x轴逆时针旋转饼图的开始角度,默认值None,为可选参数。  
[radius]:浮点数,指定饼图的半径,默认值1,为可选参数。  
[textprops]:字典,设置文本对象的字典参数,默认值None,为可选参数。  
**kwargs:不定长关键字参数,用字典形式设置条形图的其它参数。
【原文链接:https://blog.csdn.net/qq_32532663/article/details/113631551】

4.出现次数最多的UFO形状

shape=np.array(df['Shape'])
shape1 = pd.value_counts(state).sort_values(axis=0,ascending=True)
shape_df=shape[:25]
#shape_dfdef read_data():
#     shape=np.array(df['Shape'])
#     shape_df = pd.value_counts(state).sort_values(ascending=False)#采用数据字典统计出现次数dic={}for item in shape_df:if item in dic.keys():dic[item]+=1else:dic[item]=1a=[]b=[]for key in dic:a.append(key)        b.append(dic[key])size=[]t=sum(b)label=a#计算每种类型所占的比例for u in b:i=u/tsize.append(i)plt.title('出现形状次数饼状图')plt.pie(size,labels=label,autopct='%.0f%%',shadow=False,startangle=150,labeldistance=1.1,pctdistance=1,radius=0.95)plt.show()if __name__ == '__main__':plt.figure(figsize=(6,6),dpi=100)read_data()

python分析UFO报道数据相关推荐

  1. [机器学习笔记] 用Python分析 TED演讲数据(更新中)

    用Python分析 TED演讲数据 首先准备TED演讲数据集,TED演讲数据集和信息可以从下面的资源获得: https://www.datafountain.cn/datasets/11 该数据集包含 ...

  2. 【可视化分析案例】用python分析Top100排行榜数据

    目录 一.数据源 二.数据读取 三.数据概览 四.数据清洗 五.可视化分析 5.1 相关性分析(Correlation) 5.2 饼图(Pie) 5.3 箱形图(Boxplot) 5.4 词云图(wo ...

  3. 南方人过冬靠的是一身正气?用Python分析全网取暖器数据

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于CDA数据分析师 ,作者:CDA数据分析师 前言 如果说冬天对北方人来说只是一个季节 ...

  4. 通过python分析微信好友数据

    随着微信的普及,越来越多的人开始使用微信.微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信.微信里的每一个好友,都代表着人们在社会里扮演的不同角色.今天这篇 ...

  5. 一键备份微博并导出生成PDF,顺便用Python分析微博账号数据!

    这里再分享下如何快速导出你的所有微博数据,然后用Python分析某个微博账号的数据,比如高赞,转发,评论微博,微博词云,微博发布时间轴,以及使用的手机. 稳部落 这是一个专业备份导出微博记录工具 ht ...

  6. 一键备份微博并导出生成PDF,顺便用Python分析微博账号数据

    苏生不惑第139 篇原创文章,将本公众号设为星标,第一时间看最新文章. 关于微博之前写过以下文章: 那些你可能不知道的微博奇技淫巧 想方便快捷的分享/收藏图片?试试免费好用的微博/b站图床 如何轻松下 ...

  7. 学霸用 Python 分析相亲网站数据,在两万异性中找到真爱!

    微信搜 "GitHubDaily" 点关注 设为 "星标",每天带你逛 GitHub! 转自大数据文摘 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉 ...

  8. 哈佛学霸用Python分析相亲网站数据后,写了份完美约会经验贴

    本文转自大数据文摘 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉杨 想脱单?那还不容易! 如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupi ...

  9. 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱

    大数据文摘出品 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉杨 想脱单?那还不容易! 如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupid等 ...

最新文章

  1. 【BZOJ】1681: [Usaco2005 Mar]Checking an Alibi 不在场的证明(spfa)
  2. python sqlite3以字典形式返回查询结果
  3. python定义一个类描述数字时钟_python自定义时钟类、定时任务类
  4. 获取Authorize.Net Transaction Key ( Getting Your Authorize.Net Transaction Key )
  5. java多线程中的调度策略
  6. Bitbucket 触发内网 Jenkins Build
  7. java上传音频的方法_将音频文件从文档目录上传到 iCloud
  8. Ubuntu 系统安装显卡驱动教程
  9. 怎么样选择合适的CFA备考资料
  10. 数据库性能优化的五种方案(mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc)
  11. 微软亚洲研究院20年20人
  12. STM32CUBEIDE 安装报错 error launching installer 解决办法
  13. dimm和udimm_Adata推出32GB DDR4-2666 UDIMM和SO-DIMM
  14. allow_url_fopen和allow_url_include详解
  15. cmake中如何添加fPIC编译选项
  16. 常用的数据标准化方法
  17. 在阿里云上做云防火墙引流
  18. 太阳能路灯实际功率怎么计算?
  19. 多相机拍照系统3D拍照建模,3D真人手办,博物馆模型制作
  20. 【黑马程序员】hmb----实而不华

热门文章

  1. netbeans打包java程序,并包含外部jar包
  2. 随想录(网络编程中的一些问题)
  3. 神奇的go语言(开始篇)
  4. ftk学习记(image显示篇)
  5. c语言如何实现全部参数加9,从C语言到汇编(九)函数参数
  6. Linux两个网卡mac地址重复,ARP响应Linux服务器上的单个MAC地址,同一网络上有多个接口...
  7. 九度搜索引擎点击优化_深圳坂田企业老总在想竞价推广和网站优化选哪个?
  8. cacti mysql-bin_Cacti环境搭建(LNMP环境)
  9. html文字阴影php,HTML_html5文字阴影效果text-shadow使用示例,复制代码代码如下: !DOCTYPE h - phpStudy...
  10. 关键路径-stl版_A*算法与蚁群算法相结合的无人艇巡逻路径规划