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
    评论
好的,我了解了。对于你的问题,我可以给你一个简单的数据分析可视化案例,使用PythonPandas和Matplotlib库。 首先,我们需要准备一个数据集。这里我选用了一个名为“tips”的数据集,它记录了一家餐厅的不同顾客在用餐时的消费金额、小费、性别、是否吸烟、用餐时间等信息。你可以在Seaborn库找到这个数据集。 接下来,我们可以使用Pandas库将数据集导入到Python,并进行一些简单的数据处理。例如,我们可以计算不同性别的平均小费金额: ```python import pandas as pd # 导入数据集 tips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv") # 计算不同性别的平均小费金额 tips.groupby("sex")["tip"].mean() ``` 结果如下: ``` sex Female 2.833448 Male 3.089618 Name: tip, dtype: float64 ``` 接下来,我们可以使用Matplotlib库将这些数据可视化。例如,我们可以绘制不同性别的平均小费金额柱状图: ```python import matplotlib.pyplot as plt # 绘制不同性别的平均小费金额柱状图 tips.groupby("sex")["tip"].mean().plot(kind="bar") # 设置图形标题和坐标轴标签 plt.title("Average Tip by Gender") plt.xlabel("Gender") plt.ylabel("Tip") # 显示图形 plt.show() ``` 结果如下: ![Average Tip by Gender](https://i.imgur.com/5XjVwUH.png) 这只是一个简单的数据分析可视化案例,你可以根据自己的需求和数据集进行更复杂的数据分析可视化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孟意昶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值