我是靠谱客的博主 疯狂白羊,这篇文章主要介绍Pandas学习 DataFrame(一)Pandas数据结构(了解)DataFrame 操作,现在分享给大家,希望可以做个参考。

Pandas功能非常强大,本文针对笔者日常学习做整理用,如果顺便能解决大家一些使用疑惑,不胜荣幸

学习教程参考链接:http://c.biancheng.net/pandas/

Pandas 库基于 Python NumPy 库开发而来,提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),这两种数据结构极大地增强的了 Pandas 的数据分析能力。

Pandas数据结构(了解)

DataFrame结构和Series结构

DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。

Series 结构,也称 Series 序列,是 Pandas 常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。

DataFrame结构数据经过筛选、聚类、提取等处理后得到的数据为Series结构数据。

复制代码
1
2
# 导库 import pandas as pd

DataFrame 操作

  1. 创建DataFrame

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1、初值列表和列名(两个值均为可选) df = pd.DataFrame([['Alex',10],['Bob',12],['Clarke',13]], columns=['Name','Age']) print(df) # 2、ndarrays 创建 dataset1 = { 'sites': ["Google", "Runoob", "Wiki"], 'number': [1, 2, 3] } df_dict1 = pd.DataFrame(dataset1) print('n',df_dict1) # 3、字典创建 dataset2 = [ {'Name': "A","Age": '1'}, {'Name': "B","Age": '2'}, {'Name': "A","Age": '2'} ] df_dict2 = pd.DataFrame(dataset2) print('n',df_dict2)

  1. 获取行列索引

复制代码
1
2
3
4
# 获取行标签 print('index:',df.index.values) # 获取列索引 print('columns:',df.columns.values)
  1. 行数据:添加/获取/删除

(1)添加行数据

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 列表类型 df.loc[len(df)] = ['Jane',14] #(源数据末尾) # 字典类型 data_dict = {'Name':'Alice','Age':15} df.append(data_dict, ignore_index=True) # append将被弃用,改用concat temp = pd.DataFrame([data_dict]) # 根据字典生成新的dataframe # 2 行方向合并两个dataframe (追加类型,索引会乱) df = pd.concat([df,temp],axis=0) # 3 重置索引 df = df.reset_index(drop=True) # drop参数True表示删除原索引,False将保留原索引转化为df的新列 # 指定行插入数据(pandas无此功能,需要借助numpy或采取其他策略) import numpy as np df2 = pd.DataFrame(np.insert(df.values, 1, values=['John', 11], axis=0)) # 源数据,插入位置,值,行插入 # define column names of DataFrame df2.columns = df.columns df2

(2)获取行数据

复制代码
1
2
3
4
5
6
7
8
9
10
# 获取前两行数据(默认不填,取前五行) print("——前两行——n",df.head(2)) # 获取第三行数据值 print("——第三行——n",df.loc[2].values) # 读取4-5行数据[切片或列表],即df.loc[3:4]或df.loc[[3,4]] print("——第4-5行——n",df.loc[3:4]) #读取df中随机3行数据(3个样本) data=df.sample(3) print("——随机3行——n{0}".format(data))

(3)删除行数据

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print("------源数据------n",df) print("------删除第1行------") df1=df.drop(labels=0) # 按行删除第1行 print(df2) print("------删除1,3行------") # 通过labels来控制删除行或列的个数,如果是删多行/多列,需写成labels=[1,3],不能写成labels=[1:2],用:号会报错 # 删除指定的某几行(非连续的) df2=df.drop(labels=[0,2],axis=0) # axis=0 表示按行删除,删除第1行和第3行 print(df2) # 要删除连续的多行可以用range(),删除连续的多列不能用此方法 print("------删除2-4行------") df3=df.drop(labels=range(1,4),axis=0) # axis=0 表示按行删除,删除索引值是第1行至第3行的正行数据 print(df3)

4. 列数据:添加/获取/删除

(1)添加列数据

复制代码
1
2
3
4
5
6
7
8
df['Gender'] = ['Boy','Boy','Girl','Girl','Girl'] df['Math'] = [92,67,83,75,89] df['PE'] = [92,67,83,75,89] # 指定位置插入列 df.insert(loc=2, column='Test', value=[i for i in range(len(df))]) print(df)

(2)获取列数据

复制代码
1
2
3
4
# 获取单列数据 print(df['Name'].values) # 获取多列数据 print(df[['Name','Math']])

(3)删除列数据

复制代码
1
2
3
4
5
6
7
8
# 删除单列 del df['Test'] df=df.drop(labels='Gender',axis=1) # axis=1 表示按列删除,删除gender列 # 删除指定的某几列 df=df.drop(labels=['Math',"PE"],axis=1) # axis=1 表示按列删除,删除gender、age列 print(df) # PS: drop(labels, axis=0, level=None, inplace=False) 标签,轴向,等级,是否对源数据生效

(4)重名名列

复制代码
1
2
3
4
5
old = df.columns.values df.rename(columns = {"Name":"name","Age":"age"}, inplace=True) new = df.columns.values print('old:',old) print('new:',new)

#%% md

5. 查询/排序/筛选数据

(1)读取数据

复制代码
1
2
3
4
5
6
# 从文件读取 # 1、从Excel文件读取.xlsx/.xls df = pd.read_excel(r'D:AToolsPythonFlies西瓜数据集.xlsx') # 2、从.csv/.txt读取 df_csv = pd.read_csv(r'D:AToolsPythonFlies西瓜数据集.txt')#,encoding='GB2312' 编码格式可选(根据需要制定) print(df)

(2)数据排序

复制代码
1
2
3
4
5
6
7
8
# 按某列值降序排序 df.sort_values(by=['密度'],ascending=False) # ascending=False(默认为True,升序) # 按行索引排序 df.sort_index() # 按列索引排序 df.sort_index(axis=1, ascending=False)

#%%

(3)数据筛选

复制代码
1
2
3
4
df0 = df[df['好瓜']=='是'] df0 = df0[df0['密度']>=0.5] df0 = df0[df0['色泽']!='青绿'] print(df0)

(4)数据去重

复制代码
1
2
3
4
df.drop_duplicates(subset=['色泽'], keep='first', inplace=False, ignore_index=False) # subset:表示要进去重的列名,默认为 None。 # keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。 # inplace:布尔值参数,默认为 False 表示删除重复项后返回一个副本,若为 Ture 则表示直接在原数据上删除重复项。

(5)数据转置

复制代码
1
2
df_T = pd.DataFrame(df.values.T,columns=df.index.values,index=df.columns.values) print(df_T)

参考学习教程:http://c.biancheng.net/pandas/

最后

以上就是疯狂白羊最近收集整理的关于Pandas学习 DataFrame(一)Pandas数据结构(了解)DataFrame 操作的全部内容,更多相关Pandas学习内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(77)

评论列表共有 0 条评论

立即
投稿
返回
顶部