网站首页 > 技术文章 正文
这里我用一个简单的简单数据分析入门项目,我们直接开始,我们把解析直接用注释的形式打在旁白。
import pandas as pd#一个很常用的数据分析模块--pandas
import matplotlib.pyplot as plt
'''导入函数pyplot,并指定别名为plt,可以后期不用反复输入pyplot。模块pyplot包含很多用于生成图表的函数'''
import seaborn as sns#调用样式声明
sns.set(style="darkgrid")#这里设置自己喜欢的样式
df = pd.read_csv('fortune500.csv')#这里在读取我们要分析的文件
df.head()
"""df是DataFrame的缩写,这里表示读取进来的数据
df.head()会将excel表格中的第一行看作列名,并默认输出之后的五行,
在head后面的括号里面直接写你想要输出的行数也行,比如2,10,100之类的。"""
df.tail()
""""同样的道理读取数据表格中的后五项"""
df.columns = ['year', 'rank', 'company', 'revenue', 'profit']
#重命名这些列,以便以后可以引用它们。
len(df)
#检测数据纵向的长度
25500
df.dtypes
'''检测数据类型,
如果一列中含有多个类型,则该列的类型会是object,同样字符串类型的列也会被当成object类型.
不同的数据类型也会被当成object,比如int32,float32'''
year int64
rank int64
company object
revenue float64
profit object
dtype: object
non_numberic_profits = df.profit.str.contains('[^0-9.-]')
df.loc[non_numberic_profits].head()
'''我们这里通过检测查出没有利润的数据'''
#检测一些明显的错误
round(100*len(df.profit[non_numberic_profits])/len(df),2)
1.45
bin_sizes, _, _ = plt.hist(df.year[non_numberic_profits], bins=range(1955, 2006))
#清空不符合的行
df = df.loc[~non_numberic_profits]
df.profit = df.profit.apply(pd.to_numeric)
len(df)
#再次测长度
25313
df.dtypes
year int64
rank int64
company object
revenue float64
profit float64
dtype: object
#再次测类型
group_by_year = df.loc[:, ['year', 'revenue', 'profit']].groupby('year')
avgs = group_by_year.mean()
x = avgs.index
def plot(x, y, ax, title, y_label):#设立一个函数,方便后期的图标绘制
ax.set_title(title)#给图标加上标题
ax.set_ylabel(y_label)#给y轴加上标题
ax.plot(x, y)#给出了输入、输出值的大小
ax.margins(x=0, y=0)#给定了原点的坐标
#开始绘制曲线
y1 = avgs.profit#这里利润的数据给y1
fig, ax = plt.subplots()
"""常用的调用,调用函数subplots(),变量fig表示整张图片,ax表示图片中的各个图表,后面不再反复提了"""
#绘制曲线
plot(x, y1, ax, 'Increase in mean Fortune 500 company profits from 1955 to 2005', 'Profit (millions)')
#绘制收入曲线
y2 = avgs.revenue#把收入的数据给y2
fig, ax = plt.subplots()#见上文
plot(x, y2, ax, 'Increase in mean Fortune 500 company revenues from 1955 to 2005', 'Revenue (millions)')
#绘制曲线
def plot_with_std(x, y, stds, ax, title, y_label):#这里又定义了一个绘制曲线的函数
ax.fill_between(x, y - stds, y + stds, alpha=0.2)#设置透明度
plot(x, y, ax, title, y_label)
fig, (ax1, ax2) = plt.subplots(ncols=2)
title = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005'#给定标题
stds1 = group_by_year.std().profit.values
stds2 = group_by_year.std().revenue.values
plot_with_std(x, y1.values, stds1, ax1, title % 'profits', 'Profit (millions)')
plot_with_std(x, y2.values, stds2, ax2, title % 'revenues', 'Revenue (millions)')
'''这里要绘制两个图像,所以有ax1,2之分'''
fig.set_size_inches(14, 4)#调节图像大小
fig.tight_layout()#紧密布局
谢谢阅读!!!
多说一句,很多人学Python过程中会遇到各种烦恼问题,没有人解答容易放弃。小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。
猜你喜欢
- 2024-10-02 MySQL用的再溜,不知道业务如何设计也白搭!!!
- 2024-10-02 JShaman本地部署专业版,批量加密工具「源码」
- 2024-10-02 UWP 自定义密码框控件(uwp+自定义密码框控件怎么用)
- 2024-10-02 干货-带你总结Mysql相关优化(mysql常用优化方案)
- 2024-10-02 Redis全文搜索教程之创建索引并关联源数据
- 2024-10-02 PHP数据类型与常量(php的数据类型主要有哪几种?)
- 2024-10-02 TensorFlow2学习25、TF2.0使用YoloV3
- 2024-10-02 Java对象内存布局(java对象在内存中如何存储)
- 2024-10-02 PHP手机和身份证号打码,生成随机数,判断逗号隔开的数字串等
- 2024-10-02 杀死僵尸进程,你需要这些神奇高效的Linux命令行
- 05-11CSS:前端必会的flex布局,我把布局代码全部展示出来了
- 05-11Moti:React Native 动画库的新标杆
- 05-11前端开发避坑指南:每天都能用的 CSS3/Less/Sass 实战技巧
- 05-11HarmonyOS:ArkTS 多态样式自学指南
- 05-115 分钟快速上手图形验证码,防止接口被恶意刷量!
- 05-11网页五指棋游戏
- 05-11告别长文焦虑!AI帮你“秒划重点”,文章秒变知识卡片
- 05-11鸿蒙NEXT小游戏开发:数字华容道
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- js数组插入 (83)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- outofmemoryerror是什么意思 (64)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)