Pandas系列基础知识以及DataFrame常用操作

一、pandas简介

①pandas是什么?

1、Pandas 是一个强大的分析结构化数据的工具集
2、它的使用基础是Numpy(提供高性能的矩阵运算)
3、用于数据挖掘和数据分析,同时也提供数据清洗功能

②pandas特性

1、快速高效的DataFrame对象,用于带有集成索引的数据处理
2、用于在内存数据结构和不同格式之间读取和写入数据的工具:csv和文本文件等
3、智能数据对齐和丢失数据的集成处理:在计算中实现基于标签的自动对齐,并轻松将杂乱数据处理为有序形式
4、灵活地重塑和旋转数据集
5、基于智能标签的切片,花式索引和大数据集子集
6、可以从数据结构中插入和删除列,以实现大小可变性
7、借助强大的分组引擎汇总或转换数据,从而允许对数据集进行拆分应用合并操作

③pandas中的主要数据结构

Series

它是一种类似于一维数组的对象,是由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象

DataFrame

DataFrame 是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame既有行索引也有列索引,可以被看做是由Series组成的字典。

二、Series

Series和Numpy中array非常类似,相当于是array的改进版,其中最重要的区别就是Series能够提供显示索引,从而为表结构的行标和列标提供了基础;

①通过数组或者字典创建Series

小提示:多数情况下,Series数据结构使我们直接从DataFrame数据结构中截取出来的Series。
Pandas 的Series对象是一个带索引数据构成的一维数组,其创建方法和array非常类似:通过pd.Series函数并输入一个序列来完成创建。
Series和array的最显著区别就在于,NumPy数组通过隐式定义的整数索引获取数值,而Pandas的Series对象用一种显式定义的索引与数值关联。显式索引的定义让 Series 对象拥有了更强的能力。例如,索引不再仅仅是整数,还可以是任意想要的类型。如果需要,完全可以用字符串定义索引:

# 通过数组创建Series
np.random.seed(1234)
arr = np.random.randint(1,10,5)
ser = pd.Series(arr, index = ['a','b','c','d','e'])
ser
# 通过字典创建Series
d = {
   "a":1,"b":2,"c":3}
ser2 = pd.Series(d)
ser2

②Series常用属性

Series 转化为array

data = pd.Series([1, 3, 2])
data_np = data.values

Series的name和rename

我们可以在创建Series时,为其命名。主要是跟DataFrame结合起来,这个名字,就相当于DataFrame的列名。

ser = pd.Series(np.random.randn(5), name='something')
ser.index
ser.name
ser.rename("数组",inplace=True)

③Series的特性

Series的数组特性:
1、Series可以进行索引和切片
2、Series与ndarray非常相似,是大多数Numoy函数的有效参数

ser[0]
ser[1:4]
ser[[1,3,4]]
ser[ser>6]
np.exp(ser)

Series的字典特性:
Series同时也像一个固定大小的dict,可以通过索引标签获取和设置值

ser["c"]
ser["c":"e"] # 可以索引到最后一个位置
ser[["a","c","d"]]
ser.get("a")
ser.get("k","没找到")

④Series的矢量化和标签对齐

矢量化操作:在进行数据分析时,通常没必要去使用循环,而是使用矢量化的操作方式
标签对齐:Series和ndarray之间的一个主要区别是,Series之间的操作会自动对齐基于标签的数据。

ser3 = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
ser5 = pd.Series([1,2,3,4,5],index = ['a','b','k','d','n'])
ser + ser3
ser + ser5

三、DataFrame

DataFrame创建函数格式如下:
df = pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
其中,data部分可以输入一维或二维结构数据,index代表行标,columns代表列标。并且和NumPy中array一样,也可以设置dtype属性。

①创建DataFrame

小提示:多数情况下,通过读取文件来创建DataFrame

# 通过数组创建dataframe
arrpd = np.random.randint(1,100,(3,7))
pd.DataFrame(arrpd, index=["a","c","b"],columns = ["A","B","C","D","E","F","G"])
# 通过字典创建DataFrame
dictpd = {
   "name":["zhangsan","lisi","wangwu"],"sold":[30000,20000,50000],"money":[6000,4000,10000]}
df1 = pd.DataFrame(dictpd)
df1
# 可以容忍缺失值
dicts = {
   "name":pd.Series(["zhangsan","lisi","wangwu"]),"sold":pd.Series([30000,20000]),"money":pd.Series([6000,4000,10000])}
df1 = pd.DataFrame(dicts)
df1

②DataFrame列操作

对于一个表结构数据来说,列的操作是最常用的操作之一。而由于DataFrame具备字典属性,因此列的选取,设置和删除列的工作原理与类似的 dict 操作相同。
增加列
1、DataFrame列的选取,设置和删除列的工作原理与类似的dict操作相同
2、insert方法插入列,指定插入列的位置
删除列
1、pop
2、drop
3、del

# 通过字典创建DataFrame
dictpd = {
   "name":["zhangsan","lisi","wangwu"],
          "sold":[30000,20000,50000],
          "money":[6000,4000,10000]}
df1 = pd.DataFrame(dictpd)
# 单独某一列的提取,或通过一个标量添加一整列信息
df1["wages"] = 2500 
# 通过其他列的运算得到新的一列
df1["contributions"] = df1["sold"] - df1["money"] - df1["wages"]
df1["sex"] = pd.Series
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值