1. DataFrame的创建

DateFrame对象是Pandas最常用的数据结构,是由不同类型的列组成的二维数据表结构,类似于EXCEL表,语法格式如下:

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

1.1 函数参数:data

参数 含义
data 创建DataFrame的数据

DataFrame的data参数接收多种类型的输入:

1.1.1 Series 的字典

1.1.1.1 Series的index不同,创建的DataFrame索引index取并集

两个索引不同的Series组成的字典构成DataFrame,生成的DataFrame的结果将是两个Series索引的并集,没有对应的数据以空值NaNbu补充。在这里插入图片描述

1.1.1.2 创建DataFrame时指定Index

当指定索引,生成的DataFrame将仅保留指定的索引对应的值,其他值将被丢弃。

sr = pd.DataFrame({'a': pd.Series(np.random.randint(10, 20, 4), index=['aa', 'bb', 'cc', 'dd']),
                   'b': pd.Series(np.random.randint(0, 9, 6), index=['aa', 'cc', 'dd', 'ee', 'ff', 'gg'])},
                  index=['aa', 'cc', 'ff'])
print(sr)

在这里插入图片描述

1.1.1.3 指定的columns列名不一致

对于列名,默认按照字典键的有序列表,若指定列名,则列名与字典键相同时,数据存在,若列名不存在字典的键中,则以控制NaN填充

sr = pd.DataFrame({'a': pd.Series(np.random.randint(10, 20, 4), index=['aa', 'bb', 'cc', 'dd']),
                   'b': pd.Series(np.random.randint(0, 9, 6), index=['aa', 'cc', 'dd', 'ee', 'ff', 'gg'])},
                  index=['aa', 'cc', 'cc','ee'],columns=['a','c'])
print(sr)

在这里插入图片描述

1.1.1.4 获取行/列名

DataFrame的行名和列名可以通过属性index与columns获取
在这里插入图片描述

1.1.2 Dicts 的字典

在这里插入图片描述

1.1.3 ndarrays 的字典

构成DataFrame的ndarrays的长度必须相同,若指定索引Index,则传入的索引index的长度与必须与ndarray数据的长度相同。默认索引为range(n):n为数据长度
在这里插入图片描述

1.1.4 lists 的字典

在这里插入图片描述

1.1.5 Series

在这里插入图片描述

1.2 函数参数:index

参数 含义
data 创建DataFrame的数据
index 产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)

1.2.1 不指定index

在这里插入图片描述

1.2.2 指定index

在这里插入图片描述

1.2.3 当data为Series

当输入数据为Series时,产生DataFrame的结果会与Series的索引一致,当创建DataFrame时如果指定的index与Series的索引不一致,DataFrame将去掉指定索引中不存在的数据
在这里插入图片描述

1.3 函数参数:columns

参数 含义
data 创建DataFrame的数据
index 产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns 创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选

1.3.1 data中未指定列标签

在这里插入图片描述

1.3.2 data中指定了列标签

此时的column参数作用为筛选
在这里插入图片描述

1.4 函数参数:dtype

参数 含义
data 创建DataFrame的数据
index 产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns 创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选
dtype DataFrame中的数据类型

在这里插入图片描述

1.5 函数参数:copy

参数 含义
data 创建DataFrame的数据
index 产生的DataFrame的索引,当数据中不包含index且创建时没有输入Index参数内容,默认为range(n)
columns 创建DataFrame的列标签,当data中没有传入列标签时,默认为range(n);当data中传入了列标签,此时的columns参数作用是筛选
dtype DataFrame中的数据类型
copy 产生的DataFrame是复制data中的数据,当data是列表或字典构成的数据时,默认copy=True;当data为Series,ndarray数组或者DataFrame时 ,默认copy=False

2. DataFrame常用操作

DataFrame在选择、增加、删除列上的操作与字典类似。

2.1 索引与切片

2.1.1 选择列

order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order)

### 2.1.1 选择某列
print(order['支付方式'])
print(type(order['支付方式']))
print(order['支付方式'].name)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.1 行选择

行选择的方法较多,可以通过行标签选择,通过行索引选择,还可以通过切片和布尔型数据选择

2.1.1.1 通过行标签选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
# 通过行标签选择
print(df.loc['p'])

在这里插入图片描述
返回一个Series对象,对象index标签是DataFrame的列名

2.1.1.2 通过行索引号选择
# 通过行索引号选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
print(df.iloc[2])

order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order.head(10))
print(order.iloc[0])

在这里插入图片描述
在这里插入图片描述

2.1.13 通过行索引切片选择
order = pd.read_excel('C:\\Users\\changyanhua\\Desktop\\order.xlsx')
print(order.head(10))
# 通过行索引号切片选择
print(order.iloc[2:5])
print(order[2:5])

在这里插入图片描述

2.1.1.4 通过布尔值选择
df = pd.DataFrame({'a': np.arange(0, 10, 2),
                   'b': np.random.randint(90, 100, 5),
                   'c': np.random.rand(5)}, index=list('stpkg'))
print(df)
# 通过布尔值向量选择行
print(df[[True, False, True, True, False]])

在这里插入图片描述

2.2 新增列

对DataFrame中不存在的列名进行操作为新增,对DataFrame存在的列名进行操作为替换

# 新增列
order['平均花费']=order['销售额']/order['数量']
print(order)

在这里插入图片描述
替换的情况:
在这里插入图片描述
插入标量,会自动运用广播机制生成与DataFrame相同长度的数据

# 插入标量

order['记录标记'] = 1
print(order.head())

在这里插入图片描述

默认插入列在DataFrame的最后,可以通过DataFrame.insert()方法,指定插入位置

order.insert(3,'国家','中国')
print(order.head())

在这里插入图片描述

2.3 删除列

2.3.1 方法一:del()函数

# 删除列
del order['订单编号']
print(order.info())

在这里插入图片描述

2.3.2 pop()函数

order.pop('订单日期')
print(order.info())

在这里插入图片描述

3.DataFrame的计算

DataFrame与Numpy的很多操作时互用的,大部分的Numpy函数可以直接被DataFrame和Series调用

参考文:https://pandas.pydata.org/docs/user_guide/dsintro.html#from-dict-of-ndarrays-lists

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐