前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas简单入门 1

Pandas简单入门 1

作者头像
阿凡亮
发布2020-04-13 13:15:44
5190
发布2020-04-13 13:15:44
举报
文章被收录于专栏:生物信息学生物信息学

1

写在前面

我是从16年开始学习Python的,在使用Python最开始的一段时间,基本是操作list列表和dict字典两个简单的数据结构,后来接触数据的特征越来越多,发现即使是嵌套字典记录数据也很困难,就开始寻求其他的替代方法,于是就发现了很好用的Pandas。

tips:嵌套字典

代码语言:javascript
复制
{'Tom': {'Age': '12', 'Country': 'America'}}

今天主要给大家介绍下Pandas里面DataFrame的简单用法。DataFrame是二维的表格型数据结构,由一维数组Series组成,很多功能与R中的data.frame类似,如果你经常用R做数据分析,应该会对下面的内容感到熟悉。

我觉得不论是学习Python还是其他的什么知识,最快理解的办法就是通过例子来学习,所以我还是用举例子的方法来进行下面的介绍。

2

DataFrame数据结构介绍

以经典的150行5列的鸢尾花数据集为例

数据为5列150行矩阵,5列中包含4个特征:

萼片长宽(SepalLength、SepalWidth)

花瓣长宽(PetalLength、PetalWidth)

以及最后一列花名Name(三种花 'Iris-setosa','Iris-versicolor','Iris-virginica')。

首先导入记录数据的csv文件。

代码语言:javascript
复制
import pandas as pd #导入模块pandasimport numpy as np #导入模块numpydata = pd.read_csv('iris.csv') #导入数据print(data.head()) #输出前五行,见下图

输出后五行

代码语言:javascript
复制
print(data.tail())     SepalLength  SepalWidth  PetalLength  PetalWidth            Name145          6.7         3.0          5.2         2.3  Iris-virginica146          6.3         2.5          5.0         1.9  Iris-virginica147          6.5         3.0          5.2         2.0  Iris-virginica148          6.2         3.4          5.4         2.3  Iris-virginica149          5.9         3.0          5.1         1.8  Iris-virginica

输出数据行列数、索引index、列名columns

代码语言:javascript
复制
print(data.shape)(150, 5)
print(data.index)RangeIndex(start=0, stop=150, step=1)
print(data.columns)Index(['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Name'], dtype='object')

3

简单操作

统计数据某列中元素种类

代码语言:javascript
复制
data["Name"].unique()array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)

各种类计数:

代码语言:javascript
复制
data["Name"].value_counts()Iris-setosa        50Iris-virginica     50Iris-versicolor    50Name: Name, dtype: int64

数据转置

代码语言:javascript
复制
data.T

选择第一列

代码语言:javascript
复制
data["SepalLength"]#或者data.iloc[:,0]

选择第一行

代码语言:javascript
复制
data.iloc[1]

选择第三到五行,共三行数据:data.iloc[2:5]

代码语言:javascript
复制
   SepalLength  SepalWidth  PetalLength  PetalWidth         Name2          4.7         3.2          1.3         0.2  Iris-setosa3          4.6         3.1          1.5         0.2  Iris-setosa4          5.0         3.6          1.4         0.2  Iris-setosa

另外loc也可以选取数据,相比iloc只能用数字,loc还可以用字符。

代码语言:javascript
复制
data.loc[2:5,["PetalWidth","Name"]]   PetalWidth         Name2         0.2  Iris-setosa3         0.2  Iris-setosa4         0.2  Iris-setosa5         0.4  Iris-setosa

快速得到具体位置的值

代码语言:javascript
复制
data.at[100,"PetalLength"]6.0

删除列(对原数据进行增添操作时最好先用copy,避免报出warning)

代码语言:javascript
复制
data2=data.copy()data2.drop("Name",axis=1,inplace=True) #删除列data2.head()   SepalLength  SepalWidth  PetalLength  PetalWidth0          5.1         3.5          1.4         NaN1          4.9         3.0          1.4         0.22          4.7         3.2          1.3         0.23          4.6         3.1          1.5         0.24          5.0         3.6          1.4         0.2

删除行

代码语言:javascript
复制
data2.drop(0)     SepalLength  SepalWidth  PetalLength  PetalWidth1            4.9         3.0          1.4         0.22            4.7         3.2          1.3         0.23            4.6         3.1          1.5         0.2……

简单对数据进行统计分析

代码语言:javascript
复制
print(data.describe())       SepalLength  SepalWidth  PetalLength  PetalWidthcount   150.000000  150.000000   150.000000  150.000000mean      5.843333    3.054000     3.758667    1.198667std       0.828066    0.433594     1.764420    0.763161min       4.300000    2.000000     1.000000    0.10000025%       5.100000    2.800000     1.600000    0.30000050%       5.800000    3.000000     4.350000    1.30000075%       6.400000    3.300000     5.100000    1.800000max       7.900000    4.400000     6.900000    2.500000

根据第一列升序排序

代码语言:javascript
复制
data.sort_values(by='SepalLength',ascending=True)

第一列中大于第一列均值的所有行数据

代码语言:javascript
复制
data[data["SepalLength"]>data["SepalLength"].mean()]

替换一个位置的元素为空值nan

代码语言:javascript
复制
data.loc[0,"PetalWidth"]=np.nandata.head()   SepalLength  SepalWidth  PetalLength  PetalWidth         Name0          5.1         3.5          1.4         NaN  Iris-setosa1          4.9         3.0          1.4         0.2  Iris-setosa2          4.7         3.2          1.3         0.2  Iris-setosa3          4.6         3.1          1.5         0.2  Iris-setosa4          5.0         3.6          1.4         0.2  Iris-setosa

删除包含有na的行

代码语言:javascript
复制
data.dropna()

删除包含有na的列

代码语言:javascript
复制
data.dropna(axis=1)

0替换na值

代码语言:javascript
复制
data.fillna(0)

生成新的一列

代码语言:javascript
复制
data=data.copy()data["SepalSum"]=data["SepalLength"]+data["SepalWidth"]

改变一列数据的类型(浮点数转为整数)

代码语言:javascript
复制
data["SepalSum"]=data["SepalSum"].astype(int)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生物信息学 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档