Pandas的基础操作:介绍/创建/查看数据/赋值/删除/常用函数接口

刚刚使用Python学习进行数据分析,分享一些概念和想法,希望可以大家一起讨论,如果理解或者表达有不准确的地方,请多多指点,不吝赐教,非常感谢~~

Pandas是一个第三方库,主要功能是提供了 DataFrame这个数据结构,它可以让我们直接在数据集上使用关系模型,比如分组(group by),聚合(agg)或者联合(join)等操作。它是基于Numpy的数据分析库。本文将分别介绍Series和DataFrame两种数据结构的基本操作。

1. 什么是Series和DataFrame

Series是Pandas提供的一种基础数据类型,也是一个序列类型,它的大部分操作与Numpy的ndarray操作类型;同时也是一个索引类型,可以像Python中的字典一样操作。但是和ndarray一样,是只能包含同一种类型元素的序列,与Python中的 list和字典不一样。每个Series对象都有index和values组成:index是从Numpy继承的index对象,保存标签信息;values保存值(如上所述,index也可以被看成标签 key)

DataFrame是一个将数据存储为行和列的对象。可以将DataFrame视为电子表格或SQL表格。它的每列都有一个名称,是一个字符串;每行都有一个索引,是一个整数。DataFrames可以包含许多不同的数据类型:字符串,整数,浮点数,元组等。

2. 创建

  • 创建Series

(1)直接创建:pd.Series([1,0.3,np.nan])
(2)从Python的list中创建:pd.Series(list([1,0.3,np.nan]))
(3)从Numpy的ndarray中创建:pd.Series(np.array([1,0.3,np.nan]))
在这里插入图片描述
我们能看到打印Series的时候,第一列有一个序列号,这就是Series的索引部分。如果我们不自定义索引,系统会生成自增的键,如图示。

(4)自定义索引:pd.Series([1,0.3,np.nan] , index = ["a","b","c"])
在这里插入图片描述
(5)从Python的字典创建:pd.Series({"a":1 , "b":0.3 , "c":np.nan}) 直接定义了索引

  • 创建DataFrame

(1)使用dictionary添加Dataframe:key为Dataframe中的列名;value为Dataframe中列名下对应的列数据(要求value个数一致)

df1 = pd.DataFrame({
    'name': ['John Smith', 'Jane Doe', 'Joe Schmo'],
    'address': ['123 Main St.', '456 Maple Ave.', '789 Broadway'],
    'age': [34, 28, 51]
})

(2)使用 list of lists 添加Dataframe:每个列表代表一行数据;可以使用关键字columns定义列名(如果不定义会和 index一样,系统自动生成一个自增序列)

df2 = pd.DataFrame([
    ['John Smith', '123 Main St.', 34],
    ['Jane Doe', '456 Maple Ave.', 28],
    ['Joe Schmo', '789 Broadway', 51]
    ],
    columns=['name', 'address', 'age'])

在这里插入图片描述
(3)从Numpy的ndarray中创建:pd.DataFrame(np.random.randn(5,4), columns=list("aasd"))
在这里插入图片描述
(4)从csv文件加载数据:pd.read_csv(" dir ", index_col=n)

通常使用是在对dataframe操作之后,数据中有一个列没有实际的效用,生成出来的0123456的序列,即列Unnamed:0,如果这个时候不使用它作为index就会出现:
在这里插入图片描述
index_col参数的含义是:将index=n的列作为索引

data=pd.read_csv("/Users/MachineLearning/03_Preprocessing:Dimensionality_reduction/Narrativedata.csv",index_col=0)

在这里插入图片描述

3. 查看数据

以下列数据为例:

data = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
  • 查看数据维度信息:data.shape
    在这里插入图片描述
  • 查看每列数据的统计信息:data.info()
    在这里插入图片描述
  • 查看每列数据的数据类型:data.dtypes
    在这里插入图片描述
  • 输出行索引:data.index
    在这里插入图片描述
  • 输出列索引:data.columns
    在这里插入图片描述
  • 查看数据:datadata.head(n)
    在这里插入图片描述
  • 查看数据的值:data.values
    在这里插入图片描述
  • 选择行数据:

(1)选择一行数据data.loc[index]data.iloc[index]
在这里插入图片描述
(2)选择多行数据:

a. data.loc[2:4]
在这里插入图片描述
b. data.iloc[2:4]data[2:4]
在这里插入图片描述

.loc[k]是读取dataframe中index为k的那一行
.iloc[k]是读取dataframe中的第k行
  • 选择列数据:

(1)选择某一列data.Bdata["B"]data.loc[ :, "B"]data.iloc[ :, 1]
在这里插入图片描述
(2)选择多列data[['A','B']]data.loc[ :, ["A","B"]]data.iloc[:,[ 0,1]]data.iloc[:,[ 0:2]]
在这里插入图片描述

  • 选择满足条件的数据:

(1)逻辑判断所有元素data[data>0]
在这里插入图片描述
(2)使用列逻辑判断,展示将满足条件的所有行数据data[data.A>0]
在这里插入图片描述
(3)满足某列中值为x的所有行数据data[data.target.isin(["1","0"])]

** (以“赋值”操作之后的数据为例)
在这里插入图片描述

4. 赋值

(1)复制数据:data.cope()
(2)给某个元素赋值:data.iat[0,0] = 100
(3)给某列中的某几个元素赋值:data.loc[data.index[1:3],'C'] = 200
(4)新增一列:data["target"]=np.random.randint(0,3,size=6)
(5)给某列赋值:data.B=200data["B"]=200data.loc[:,["B","D"]]=150data.iloc[:,[1,3]]=150

在这里插入图片描述
(6)给某列的索引名重新赋值:data.rename(columns={'target':'TAG'})
(7)给全部列的索引重命名:data.columns=["a","b","c","d","e","f"]
(8)给全部行索引重命名:data.index=["a","b","c","d","e","f"]
(9)新增一行:data.append(data_series, ignore_index = True)
(10)为NaN元素赋值:data.fillna(n)

5. 删除

  • 删除有空值的行或列:data.dropna(axis=0, inplace=False)
  • 删除某行或某列:data.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

使用数据:

data = pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))

(1)删除列:使用label+axis参数或者直接使用columns参数

data.drop(["A","C"],axis=1)
# or
data.drop(columns=["A","C"])

在这里插入图片描述
(2)删除行:直接使用index参数

data.drop(index=[2,5])

在这里插入图片描述

6.常用函数

常用接口参数返回值说明
1data.mean()axis=0/1默认值为0Series平均值
2data.std()axis=0/1默认值为0Series求每的标准差
3data.median()axis=0/1默认值为0Series求每的中位数
4data.min()axis=0/1默认值为0Series求每的最小值
5data.max()axis=0/1默认值为0Series求每的最大值
6data.sum()axis=0/1默认值为0DataFrame/Series对每求和
7data.cumsum()axis=0/1默认值为0DataFrame/Series对每进行累加
8data.nunique()axis=0/1默认值为0int/Series统计Series中不同值的个数/统计DataFrame中每中几个不同值
9data_series.mode()Series常用在返回对Series中出现最多的元素
10data_series.unique()ndarray只能用在统计Series中存在的不重复元素
11data_series.value_counts()Series只能用在统计Series中每个元素出现的次数
12pd.isnull(data)要被判断的Series或者Dataframebool类型的Series/DataFrame判断Series或者Dataframe中每个元素是否为NaN
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值