当前位置: 首页 > news >正文

二、pandas入门


pandas入门

  • 前言
  • 一、Serise
    • 1.1 创建 Serise 对象
      • 1.1.1 自动生成索引的Serise 对象
      • 1.1.2 指定索引的Serise 对象
      • 1.1.3 元组跟字典创建Serise 对象
    • 1.2 Serise 的常用属性
    • 1.3 Serise 的常用方法
    • 1.4 Serise 的布尔索引
    • 1.5 Serise 的运算
  • 二、DataFrame
    • 2.1 创建DataFrame对象
      • 2.1.1 字典方式创建DataFrame对象
      • 2.1.2 列表+元祖方式创建DataFrame对象
    • 2.2 DataFrame常用属性跟方法
      • 2.2.1 基础演示
      • 2.2.2 DataFrame的布尔索引
      • 2.2.3 DataFrame的计算
    • 2.3 DataFrame索引操作
      • 2.3.1 set_index()函数 设置行索引名字
      • 2.3.2 加载数据的时候, 直接指定索引列
      • 2.3.3 reset_index()函数, 可以重置索引
      • 2.3.4 DataFrame-修改行列索引
        • 2.3.4.1 rename()函数, 可以对原有的行索引名 和 列名进行修改
        • 2.3.4.2 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
    • 2.4 添加-删除-插入列
      • 2.4.1 添加列
      • 2.4.2 删除列
      • 2.4.3 插入列
  • 总结


前言

  • Pandas 中只有列 或者 二维表, 没有行的数据结构 (即使是行的数据, 也会通过列的方式展示)
  • pamdas 中分为两大结构 分别是:Serise 和 DataFrame

一、Serise

  • Series和Python中的列表非常相似,但是它的每个元素的数据类型必须相同

1.1 创建 Serise 对象

  • Series是一种类似于一维数组的对象,由下面两个部分组成:
    • values:一组数据(numpy.ndarray类型)
    • index:相关的数据行索引标签;如果没有为数据指定索引,于是会自动创建一个0到 N - 1 (N为数据的长度) 的整数型索引。

1.1.1 自动生成索引的Serise 对象

代码如下(示例):

import numpy as np
import pandas as pd# 创建numpy.ndarray对象
n1 = np.array([1, 2, 3])
print(n1)        # [1 2 3]
print(type(n1))  # <class 'numpy.ndarray'># 创建Series对象
s1 = pd.Series(data=n1)
print(s1)          # 0    1# 1    2# 2    3print(type(s1))    # dtype: int32# <class 'pandas.core.series.Series'># 直接创建
s2 = pd.Series(['banana', 42])
print(s2)            # 0    banana# 1        42
print(type(s2))      # dtype: object# <class 'pandas.core.series.Series'>

1.1.2 指定索引的Serise 对象

代码如下(示例):

s2 = pd.Series(['张三','男'], index = ['Name', 'Gender'])
print(s2)     # Name      张三# Gender     男# dtype: object

1.1.3 元组跟字典创建Serise 对象

代码如下(示例):

import pandas as pd# 使用元组
tuple1 = (1, 2, 3)
s1 = pd.Series(tuple1)
print(s1)    # 0    1# 1    2# 2    3# dtype: int64# 使用字典 字典中的key值是Series对象的索引值,value值是Series对象的数据值
dict1 = {'A': 1, 'B': 2, 'C': 3}
s2 = pd.Series(dict1)
print(s2)      # A    1# B    2# C    3# dtype: int64

1.2 Serise 的常用属性

属性说明
loc使用索引值取子集
iloc使用索引位置取子集
dtype或dtypesSeries内容的类型
TSeries的转置矩阵
shape数据的维数
sizeSeries中元素的数量
valuesSeries的值
indexSeries的索引值

1.3 Serise 的常用方法

方法说明
append连接两个或多个Series
corr计算与另一个Series的相关系数
cov计算与另一个Series的协方差
describe计算常见统计量
drop_duplicates返回去重之后的Series
equals判断两个Series是否相同
get_values获取Series的值,作用与values属性相同
hist绘制直方图
isinSeries中是否包含某些值
min返回最小值
max返回最大值
mean返回算术平均值
median返回中位数
mode返回众数
quantile返回指定位置的分位数
replace用指定值代替Series中的值
sample返回Series的随机采样值
sort_values对值进行排序
to_frame把Series转换为DataFrame
unique去重返回数组
value_counts统计不同值数量
keys获取索引值
head查看前5个值
tail查看后5个值

1.4 Serise 的布尔索引

代码如下(示例):

import pandas as pddf = pd.read_csv('文件路径.csv')
# 加入文件有八列的话 只有是True的那列能取到, 如果比八列多的话,多的部分用NAN填充
bool_values = [False, True, True, False, False, False, True, False]
df[bool_values]

1.5 Serise 的运算

  • Series 和数值型变量计算时,变量会与Series中的每个元素逐一进行计算
  • 两个Series之间计算时,索引值相同的元素之间会进行计算;索引值不同的元素的计算结果会用NaN值(缺失值)填充

二、DataFrame

  • DataFrame是一个表格型的结构化数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。
  • DataFrame是Pandas中的最基本的数据结构对象,简称df;可以认为df就是一个二维数据表,这个表有行有列有索引
  • DataFrame是Pandas中最基本的数据结构,Series的许多属性和方法在DataFrame中也一样适用.

2.1 创建DataFrame对象

2.1.1 字典方式创建DataFrame对象

代码如下(示例):

import pandas as pddict_data = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [18, 20, 22]
}
# 使用默认自增索引
# 字典中的key值是df对象的列名,value值是对应列的数据值
df1 = pd.DataFrame(data=dict_data)
print(df1)         #    id  name   age# 0   1   张三   18# 1   2   李四   20# 2   3   王五   22
print(type(df1))   # <class 'pandas.core.frame.DataFrame'># 通过index参数指定索引, columns参数指定列的位置
df2 = pd.DataFrame(data=dict_data, index=['A', 'B', 'C'], columns=['id', 'age', 'name'])
print(df2)         #    id  name   age# A   1   张三   18# B   2   李四   20# C   3   王五   22 

2.1.2 列表+元祖方式创建DataFrame对象

代码如下(示例):

list_data = [(1, '张三', 18),(2, '李四', 20),(3, '王五', 22)]
df3 = pd.DataFrame(data=list_data,index=['A', 'B', 'C'],  # 手动指定索引columns=['id', 'name', 'age'])  # 手动指定列名
print(df3)    #    id  name  age# A   1  张三   18# B   2  李四   20# C   3  王五   22

2.2 DataFrame常用属性跟方法

2.2.1 基础演示

代码如下(示例):

import pandas as pd# 加载数据集, 得到df对象
df = pd.read_csv('文件地址')print('=============== 常用属性 ===============')
# 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
print(df.shape)
# 查看数据值个数, 行数*列数, NaN值也算
print(df.size)
# 查看数据值, 返回numpy的ndarray类型
print(df.values)
# 查看维度数
print(df.ndim)
# 返回列名和列数据类型
print(df.dtypes)
# 查看索引值, 返回索引值对象
print(df.index)
# 查看列名, 返回列名对象
print(df.columns)
print('=============== 常用方法 ===============')
# 查看前5行数据
print(df.head())
# 查看后5行数据
print(df.tail())
# 查看df的基本信息
df.info()
# 查看df对象中所有数值列的描述统计信息
print(df.describe())
# 查看df对象中所有非数值列的描述统计信息
# exclude:不包含指定类型列
print(df.describe(exclude=['int', 'float']))
# 查看df对象中所有列的描述统计信息
# include:包含指定类型列, all代表所有类型
print(df.describe(include='all'))
# 查看df的行数
print(len(df))
# 查看df各列的最小值
print(df.min())
# 查看df各列的非空值个数
print(df.count())
# 查看df数值列的平均值
print(df.mean())

2.2.2 DataFrame的布尔索引

  • 跟Series一样

2.2.3 DataFrame的计算

  • 跟Series一样

2.3 DataFrame索引操作

2.3.1 set_index()函数 设置行索引名字

data = pd.read_csv('文件路径')  
data.head()data1 = data.set_index('写要设为索引的列名')# 如果加上 inplace=True, 则会修改原始的df对象
data.set_index(写要设为索引的列名', inplace=True)  
data.head()    # 原始的数据并没有发生改变.

2.3.2 加载数据的时候, 直接指定索引列

代码如下(示例):

import pandas as pd
pd.read_csv('文件路径', index_col = '要设为索引的列名')

2.3.3 reset_index()函数, 可以重置索引

代码如下(示例):

# 加上inplace, 就是直接修改 源数据.
data.reset_index(inplace=True) 
data.head()

2.3.4 DataFrame-修改行列索引

2.3.4.1 rename()函数, 可以对原有的行索引名 和 列名进行修改

代码如下(示例):

data = pd.read_csv('文件路径', index_col='要设置为索引的列名')
data.index[:5]  # 前5个行索引名data.columns[:5]  # 前5个列名# 手动修改下 行索引名 和 列名
idx_rename = {'旧列名': '新列名', '旧列名': '新列名'}
col_rename = {'旧列名': '新列名', '旧列名': '新列名'}# 通过rename()函数, 对原有的行索引名 和 列名进行修改
data.rename(index=idx_rename, columns=col_rename).head()
2.3.4.2 把 index 和 columns属性提取出来, 修改之后, 再赋值回去
  • index类型不能直接修改,需要先将其转成列表, 修改列表元素, 再整体替换

代码如下(示例):

data = pd.read_csv('文件路径', index_col='指定哪一列为索引列')# 提取出 行索引名 和 列名, 并转成列表.
index_list = data.index.tolist()
columns_list = data.columns.tolist()# 修改列表元素值
index_list[0] = '新列名'
index_list[1] = '新列名'columns_list[0] = '新行名'
columns_list[1] = '新行名'# 重新把修改后的值, 设置成 行索引 和 列名
data.index = index_list
data.columns = columns_list# 查看数据
data.head(5)

2.4 添加-删除-插入列

2.4.1 添加列

  • 通过 df [列名] = 值 的方式, 可以给df对象新增一列, 默认: 在 df 对象的最后添加一列

2.4.2 删除列

代码如下(示例):

data.drop('列名')  # 报错, 需要指定方式, 按行删, 还是按列删.
data.drop('列名', axis='columns')    # 按列删
data.drop('列名', axis=1)            # 按列删, 这里的1表示: 列data.head().drop([0, 1])                # 按行索引删, 即: 删除索引为0和1的行

2.4.3 插入列

  • 有点特殊, 没有inplace参数, 默认就是在原始df对象上做插入的

代码如下(示例):

# insert() 表示插入列.   参数解释: loc:插入位置(从索引0开始计数), column=列名, value=值
# 新一列的值  还可以由原表中的两列运算所得
data.insert(loc=1, column='列名', value=data['列名'] - data['列名'])
data.head()

总结

  • 文章总结了pandas中Series和DataFrame两个结构的属性和功能,以后碰到相关内容可以来这查看。

http://www.mrgr.cn/news/31220.html

相关文章:

  • arkts基础知识
  • 实例代码逐行解读
  • Git常用指令
  • 想要监控电脑?这十款电脑监控软件推荐!
  • Gitlab学习(007 gitlab项目操作)
  • python使用argparse解析命令行,如何正确传入科学计数法形式的浮点数
  • Unsupervised Domain Adaptation by Backpropagation
  • 十三 系统架构设计(考点篇)试题
  • 工程师 - .NET程序反编译器
  • SQLiteHelper
  • 视频单目标跟踪研究
  • 踩坑记录:adb修改settings数据库ContentObserver无回调
  • 基于存内计算架构的模型部署与映射优化
  • 【洛谷】P1313 [NOIP2011 提高组] 计算系数 的题解
  • MySQL —— 索引
  • mysql表逆向实体类
  • 大气网格化精细化监管监测系统
  • API 接口接入前:遵循标准流程与规范的注意事项
  • 云计算课程作业1
  • EC Shop安装指南 [ Apache PHP Mysql ]