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

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()])

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟意昶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值