前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >R用户要整点python--pandas画图

R用户要整点python--pandas画图

作者头像
用户11414625
发布2024-12-20 15:57:33
发布2024-12-20 15:57:33
6300
代码可运行
举报
文章被收录于专栏:生信星球520生信星球520
运行总次数:0
代码可运行

python的几个绘图库:pandas、Seaborn、matplotlib

1.单变量画图

pandas 中的.plot方法可以直接画图。在要画图的列上调用 .plot() 方法并传入 kind 参数。该方法适用于数据框和Series object。

查了一下series:表格数据的每一行或每一列的数据结构都是series,可以将它看成一维的表格数据。可以属于DataFrame的一部分也可以作为一个单独的数据结构存在。我们可以用values,index,items等Series的属性来获取各个部分的值。

例如:

代码语言:javascript
代码运行次数:0
复制
from pandas import Series
emp=['001','002','003','004','005','006']
name=['亚瑟', '后裔','小乔','哪吒' ,'虞姬','王昭君']
series = Series(data=name,index=emp)

# 获取数据的值
print(series.values)
# 获取索引的值
print(series.index.tolist())
# 获取每对索引和值
print(list(series.items()))

直方图和箱线图适用于连续数据。 因为pandas的.plot方法时以matplotlib为基础的,所以每次画图之前要先import matplotlib.pyplot as plt,画图之后又需要show()展示图片。

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
# Histogram
df['column_name'].plot(kind='hist')
plt.show()

# Boxplot
df['column_name'].plot(kind='box')
plt.show()
插播:在python里面使用iris

(现搜的) 第一种方法时从sklearn库里面获取,没有第五列,也不是个规范的数据框,不甚推荐

代码语言:javascript
代码运行次数:0
复制
!pip install scikit-learn
from sklearn import datasets
iris = datasets.load_iris()
print(iris.data)

第二种方法是从seaborn库里获取,代码简单,是一个有5列的数据框,推荐

代码语言:javascript
代码运行次数:0
复制
!pip install seaborn
import seaborn as sns
import matplotlib.pyplot as plt

iris = sns.load_dataset('iris')
type(iris)
## pandas.core.frame.DataFrame
iris.head()
##  sepal_length  sepal_width  petal_length  petal_width species
## 0           5.1          3.5           1.4          0.2  setosa
## 1           4.9          3.0           1.4          0.2  setosa
## 2           4.7          3.2           1.3          0.2  setosa
## 3           4.6          3.1           1.5          0.2  setosa
## 4           5.0          3.6           1.4          0.2  setosa

和R语言的内置数据iris内容一致,列名不同。

直方图-hist

matplotlib.pyplot 中的 show() 函数来显示绘图。

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
# Histogram
iris['sepal_length'].plot(kind='hist')
plt.show()
条形图-bar

barplot适用于分类数据。在绘图之前,要先用 .value_counts() 方法获取值的计数。

代码语言:javascript
代码运行次数:0
复制
# Bar plot
counts = iris.species.value_counts()
colors = sns.color_palette("Set2", n_colors=len(counts))  # "Set2" 是一种调色板
counts.plot(kind='bar', color=colors)
plt.show()
练习

课程使用的示例数据是tips,来自seaborn包,内容如下:

代码语言:javascript
代码运行次数:0
复制
import seaborn as sns

tips = sns.load_dataset('tips')
tips.head()
## total_bill   tip     sex smoker  day    time  size
## 0       16.99  1.01  Female     No  Sun  Dinner     2
## 1       10.34  1.66    Male     No  Sun  Dinner     3
## 2       21.01  3.50    Male     No  Sun  Dinner     3
## 3       23.68  3.31    Male     No  Sun  Dinner     2
## 4       24.59  3.61  Female     No  Sun  Dinner     4

1.用 tip 列画直方图 2.用 tip 列画箱线图 3.sex列画条形图,展示每个性别的数量。

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
# Histogram of tip
tips.____.____(____)
____

# Boxplot of the tip column
____
plt.show()

# Bar plot
cts = tips.____.____
cts.plot(____)
plt.show()

答案:

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
# Histogram of tip
tips.tip.plot(kind = 'hist')
plt.show()

# Boxplot of the tip column
tips.tip.plot(kind = 'box')
plt.show()

# Bar plot
cts = tips.sex.value_counts()
cts.plot(kind = 'bar')
plt.show()

2.两变量画图

点图-scatter

两个连续变量可以画散点图。两变量的图不是在单列上调用.plot方法,而是在整个数据框上调用。

代码语言:javascript
代码运行次数:0
复制
# Scatter plot
iris.plot(kind = 'scatter',x = 'sepal_length',y = 'sepal_width')
plt.show()
箱线图-boxplot

箱线图来展示一个连续变量和一个分类变量。但是,要用 .boxplot() 方法而不是 .plot() 方法。

代码语言:javascript
代码运行次数:0
复制
# Boxplot
iris.boxplot(column='sepal_length', by='species')
plt.show()

也可以直接对整个数据框的每列画箱线图,字符串列会自动跳过去

代码语言:javascript
代码运行次数:0
复制
iris.plot(kind = "box")
plt.show()
练习

1.'total_bill'列做横坐标,'tip'列做纵坐标,画散点图 2.'sex'列做横坐标,'tip'列做纵坐标,画箱线图

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset('tips')

# Scatter plot between the tip and total_bill
tips.plot(____, ____, ____)
plt.show()

# Boxplot of the tip column by sex
tips.____(column=____, by=____)
plt.show()

答案

代码语言:javascript
代码运行次数:0
复制
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset('tips')

# Scatter plot between the tip and total_bill
tips.plot(x = 'total_bill', y = 'tip', kind = 'scatter')
plt.show()

# Boxplot of the tip column by sex
tips.boxplot(column='tip', by='sex')
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信星球 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.单变量画图
    • 插播:在python里面使用iris
    • 直方图-hist
    • 条形图-bar
    • 练习
  • 2.两变量画图
    • 点图-scatter
    • 箱线图-boxplot
    • 练习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档