python中pandas进行数据分析与可视化(1)

news/2024/11/8 21:06:03/

1.创建数据源

matplotlib库是用于数据可视化,pandas则是用于数据分析,在导入这两个包之后,我们可以手工创建两个数据,其表示的是在某一年里,不同名称的新生儿数量,比如被叫做Bob的新生儿有968位

import matplotlib.pyplot as plt
import pandas as pd #导入pandas的常规做法#创建数据 初始数据集: 婴儿名字和对应的出生数量
names = ['Bob','Jessica','Mary','John','Mel']
births = [968, 155, 77, 578, 973]

之后可以用zip函数将这两个列表合并在一起,获取一个更容易理解的列表

BabyDataSet = list(zip(names, births))
print(BabyDataSet)

在这里插入图片描述

2.数据源表格化

因为在数据分析的时候,往往会使用表格的形式进行处理,所以我们需要先把数据源转换成表格的形式,这里会用到DataFrame对象,我们可以把这个对象理解为包含了BabyDataset 的内容而格式非常象一个 sql 表格或者 Excel 的数据表

df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births'])
print(df)

在这里插入图片描述

3.数据保存

此时我们可以将df里的表格数据存储为csv文件,这样可以进行文件共享,这里用到了indexheader两个参数,可以用来控制是否要导出表头和序号

#数据导出 两个参数分别用于决定是否要导出序号和表头
df.to_csv('births1880.csv', index=False, header=False)

这里如果不指定导出文件的路径,那就会默认导出到和当前这个python文件相同路径下
在这里插入图片描述

4.数据读取

如果我们从其他人那里获取了一个csv文件,也同样可以通过pandas获取里面的数据

Location = r'./births1880.csv' #从 这个python文件 当前的位置读取 csv 文件
df = pd.read_csv(Location,names=['Names','Births'])
print(df)

同样的,如果不指定获取文件的路径,那也就是会在当前路径下去获取文件
在这里插入图片描述

5.确认数据类型

因为这份数据是在某一年里,不同名称的新生儿数量,所以按道理来说,Births这个字段的值就不应该有小数,我们可以提前通过dtypes来看到每个字段的类型

# 查看每一列的数据类型
print(df.dtypes)# 查看 Births 列的数据类型
print(df.Births.dtype)

在这里插入图片描述

6.数据分析-获取最大值

如果当前想要获取Births里的最大值,可以直接通过DataFrame对象里的max函数获取

print(df['Births'].max())

在这里插入图片描述
但这种方法只能获取最大的那个数值,没有办法知道对应的Names是什么,所以可以改用对Births排序的方法,再取第一条记录,就可以同时获取所有信息了

Sorted = df.sort_values(['Births'], ascending=False)
print(Sorted.head(1))

在这里插入图片描述

7.数据可视化

之前有写过一篇使用matplotlib绘制可视化图形的博客,这里对其稍作修改,就可以使用,如果对下面这段数据可视化的逻辑有不理解对地方,可以参考python数据分析-matplotlib绘制折线图

# 绘图
# df['Births'].plot()
df['Births'].plot.bar() #这里改用的条形图更直观
# Births 中的最大值
MaxValue = df['Births'].max()
# 找到对应的 Names 值
MaxName = df['Names'][df['Births'] == df['Births'].max()].values
# 准备要显示的文本
Text = str(MaxValue) + " - " + MaxName
# 将文本显示在图形中
plt.annotate(Text, xy=(1, MaxValue), xytext=(8, 0),
xycoords=('axes fraction', 'data'), textcoords='offset points')
print("The most popular name")
df[df['Births'] == df['Births'].max()]
plt.show()
print(df[df['Births'] == df['Births'].max()])

在这里插入图片描述


http://www.ppmy.cn/news/3525.html

相关文章

华为机试真题 Python 实现【寻找路径】【2022.11 Q4 新题】

目录 题目 思路 考点 Code 题目 二叉树也可以用数组来存储,给定一个数组,树的根节点的值储存在下标1, 对于储存在下标n的节点,他的左子节点和右子节点分别储存在下标2*n和2*n+1, 并且我们用-1代表一个节点为空。 给定一个数组存储的二叉树,试求从根节点到最小的叶子节…

TS-1-类型

TypeScript中的基本类型 TS变量声明时指定类型 通过类型声明可以指定TS中变量(参数、形参)的类型,(类型使用小写),使得变量只能存储某种类型的值 类型 类型例子描述number1, -33, 2.5任意数字string‘hi’, “hi”, hi任意字符串booleantru…

vue项目的首屏优化策略

虽然标题是vue项目的首屏优化策略,但是里面绝大部分的方法,对于其他语言写成的单页应用同样适用 1、使用路由懒加载 首屏进入时,直接加载和首屏相关路由,其他全部路由组件实现懒加载,即打开该路由时再去加载&#xff…

「安全狗漏洞通告」Fortinet SSL VPN远程代码执行漏洞解决方案

安全狗应急响应中心监测到,Fortinet发布了FortiOS SSL-VPN的风险通告,漏洞等级:高危,漏洞评分:9.3。漏洞编号:CVE-2022-42475。 安全狗应急响应中心建议广大用户做好资产自查以及预防工作,以免遭…

【华为上机真题 2022】消消乐游戏

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

java计算机毕业设计springboot+vue航空公司电子售票系统-机票预订系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

算法进阶指南:基本算法0x07 贪心

1.Sunscreen 传送门 #include<bits/stdc.h> using namespace std; const int N2510; pair<int,int>a[N],b[N]; int main() {int n,m;cin>>n>>m;for(int i1;i<n;i) cin>>a[i].first>>a[i].second;for(int i1;i<m;i) cin>>b[i…

c++-数据类型

c-数据类型整型取值范围与内存溢出浮点型浮点型coutsetf显示精读浮点数的存储机制&#xff08;还要再看 &#xff09;字符型转义字符字符串型 - stringstring与C字符串字符串操作bool 类型I/Ocin/coutcout控制输出endl整型 short : 2bytesint : 4byteslonglong : longchar : 1…