【整理】Python学习笔记1.6

第六章 Pandas基础


     Pandas是一款开放源码的BSD许可的Python库,它基于Numpy创建,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。(虽然此熊猫非彼熊猫)

熊猫官网

Pandas常用类

类别说明
Series基本数据结构,一维标签数组,能够保存任何数据类型
DataFrame基本数据结构,一般为二维数组,是一组有序的列
Index索引对象,负责管理轴标签和其他元数据(比如轴名称)
groupy分组对象,负责传入需要分组的参数实现对数据分组
Timestamp时间戳对象,表示时间轴上的一个时刻
Timedelta时间差对象,用来计算两个时间点的差值

Series

Series本质上是一个ndarray,通过ndarray创建Series对象

class pandas.Series(data = None,index = None, dtype = None, name = None, copy = false, fastpath = False)

DataFrame

DataFrame是pandas基本数据结构,类似数据库中的表。DataFrame既有行索引,也有列索引,它可以看作Series组成的dict,每个Series看作DataFrame的一个列。

class pandas.DataFrame(data=None,index =None,columns = None,dtype = None,copy = False)

DataFrame的基本操作包括索引操作、排序与重置、数据合并。


索引方式包括3个方面:基础索引方式、loc方法和iloc方法、层次化索引。loc方法基于索引名称,iloc方法基于索引位置。

loc方法是基于名称的索引方法,它接收索引名称(标签),若索引名称不存在则会报错。

loc方法也能接收整数,但这个整数必须是已存在的索引名称。

iloc方法完全基于位置,它接收int,不能接收索引名称,否则会报错。iloc的用法与NumPy中ndarray的数字索引方式完全相同。

Index

Index对象为其余pandas对象储存轴标签。管理轴标签和其他元数据(如轴名称)。创建series或DataFrame等对象时,索引都会被转换为Index对象。主要Index对象包括Index(一般化的Index对象),MultiIndex(层次化Index对象),DatatimeIndex(Timestamp索引对象)、PeriodIndex(Periods索引对象)。

Index对象可以通过pandas.Index()函数创建,也可以通过创建数据对象Series、DataFrame时接受index(或column)参数创建,前者属于显式创建,后者属于隐式创建。

第六章课后题概述

  1. C
    在pandas,我们有一维数据——Series,有二维数据——DataFrame,那么,我们有时候有三维数据的需求,pandas提供三维数据结构——panel。新版的pandas库已经移除了数据结构panel。

  2. D
    data表示接收的的数据,接收array或dict; index表示索引,必须与数据长度相同,接收array或list,name表示Series对象的名称,接收string或list。

  3. D
    C项可结合布尔型索引得到相应的结果

  4. D
    删除列的方法有多种如del、pop、drop等。常用的是pop方法,它可以删除行或者列。

  5. C
    创建的Index对象不可以修改,保证了Index对象在各个数据结构之间的安全共享。对于D项,使用unique()函数,可以计算Index中唯一值的数组。

  6. D
    loc方法基于索引名称,基本语法格式如DataFrame.loc[行索引名称或条件,列索引名称]; iloc方法基于索引位置,基本语法格式如DataFrame.iloc[行索引位置,列索引位置]

  7. D
    how表示数据的连接方式,接受inner、outer、left和right,默认为inner。join()方法为DataFrame的堆叠合并方法。

  8. B
    replace方法用于替换字符串,但与Python内建的str方法在用法上可能有所不同;文本既可以通过slice方法截取字符,实现索引操作,也可以通过”[ ]”符号实现索引操作,这是基于位置的。若输入位置超过索引,则返回NaN。“文本处理的方法让操作数组上的每一个元素变得容易”、少量文本处理方法是特有的,如cat、get等。

  9. D
    结合意义说明,Timestamp是时间戳,为具体时间点; Period为事件段,表示的意义是不同的。

  10. ABCD
    通过pandas.Categorical,pandas.cut都可以创建category,设置Series的dtype参数为category和转换Series数据类为category也都可以创建category。

  11. 填空题
    (1)对DataFrame按指定列排序的方法是sort_index(axis = 1)
    (2)通过append方法能够在原Series上插入(追加)新的Series。
    (3)设置DataFrame的drop方法的axis参数为0可以删除行
    (4)层次化索引对应的类是MultiIndex。
    (5)CategoricalDtype是category的专用类型,它还可以锁定排序。

  12. 创建一个DataFrame

import pandas as pd
dict1 = {'col1': [0, 1, 2, 3, 4], 'col2': [5, 6, 7, 8, 9]}
print('通过dict创建的DataFrame为:\n', pd.DataFrame(dict1, index = ['a', 'b', 'c', 'd', 'e']))
通过dict创建的DataFrame为:
    col1  col2
a     0     5
b     1     6
c     2     7
d     3     8
e     4     9
  1. DataFrame操作
# 创建DataFrame
import pandas as pd
d = {'col1':[0, 3, 6, 9],'col2':[1, 4, 7, 10],'col3':[2, 8, 5, 11]}
df = pd.DataFrame(d,index=['a','b','c','f'])
print(df)

# 筛选出列名为“col2”的列大于4的所有数据
# df.loc[df['col2']>4,:]
print(df.loc[df['col2']>4,:])

# 删除列名为“col2”的列
# df.drop(columns=['col2'])
print(df.drop(columns=['col2']))

# 按列名为“col3”的列降序排列DataFrame
# df.sort_values(by='col3', ascending=False)
print(df.sort_values(by='col3', ascending=False))
 col1  col2  col3
a     0     1     2
b     3     4     8
c     6     7     5
f     9    10    11

   col1  col2  col3
c     6     7     5
f     9    10    11

   col1  col3
a     0     2
b     3     8
c     6     5
f     9    11

   col1  col2  col3
f     9    10    11
b     3     4     8
c     6     7     5
a     0     1     2
  1. 计算元素长度
#创建DataFrame
d1 = {'col1':['ab', 'abc', None],'col2':[2, 3, 4]}
df1 = pd.DataFrame(d1,index=['a','b','c'])
print(df1)

# 统计元素长度
# df1['col1'].str.len()
print(df1['col1'].str.len())
  col1  col2
a    ab     2
b   abc     3
c  None     4

a    2.0
b    3.0
c    NaN
Name: col1, dtype: float64

     注:代码除部分经本人修改外,主要来自 机械工业出版社的《Python3智能数据分析快速入门》 的配套资料。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值