Pandas库的使用

目录

Pandas简介

Series

构造方法

创建方式 

基本操作(获取值,切片语法,赋值,删除)

属性和方法

DataFrame

 构造方法

使用列表创建

使用字典创建

使用ndarrys创建

使用Series创建

使用loc属性返回指定行(1行或多行)的数据

DataFrame的属性和方法

访问DataFrame元素

修改DataFrame

删除DataFrame元素

DataFrame的合并与分割

索引和切片

Pandas CSV 文件

数据处理


Pandas简介

pandas一般用于数据分析,可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据;可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

pandas基于Numpy,可以看成是处理文本或者表格数据。pandas中有两个主要的数据结构,其中Series数据结构类似于Numpy中的一维数组,DataFrame类似于多维表格数据结构。


Series

类似于一维数组或列表,是由一组数据以及与之相关的数据标签(索引)构成。Series 可以看作是 DataFrame 中的一列,也可以是单独存在的一维数据结构。

特点:

  • 一维数组:Series是一维的,这意味着它只有一个轴(或维度),类似于 Python 中的列表。
  • 索引:每个 Series  都有一个索引,它可以是整数、字符串、日期等类型。如果不指定索引,Pandas 将默认创建一个从 0 开始的整数索引。
  • 数据类型:Series 可以容纳不同数据类型的元素,包括整数、浮点数、字符串、Python 对象等。
  • 大小不变性:Series 的大小在创建后是不变的,但可以通过某些操作(如 append 或 delete)来改变。
  • 操作:Series的大小在创建后是不变的,但可以通过某些操作(如append或delete)来改变。
  • 缺失数据:Series可以包含缺失数据,Pandas使用NaN来表示缺失或无值。
构造方法
pandas.Series(data=None, index=None, dtype=None, name=None, 
                                                        copy=False, fastpath=False)

参数说明:data可以是列表,数组,字典,标量等。index是索引部分,用于对数据进行标记。

import pandas as pd
#指定索引值
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])
#根据索引值读数据
print(myvar["y"])
#使用key/value对象,类似字典来创建Series
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites)
print(myvar)

输出:      Runoob
                1    Google
                2    Runoob
                3      Wiki
                dtype: object

如果我们只需要字典中的一部分数据,只需要指定需要数据的索引即可

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
#只需要前两个数据
myvar = pd.Series(sites, index = [1, 2])
创建方式 
# 使用列表创建 Series
s = pd.Series([1, 2, 3, 4])
# 使用 NumPy 数组创建 Series
s = pd.Series(np.array([1, 2, 3, 4]))
# 使用字典创建 Series
s = pd.Series({'a': 1, 'b': 2, 'c': 3, 'd': 4})
基本操作(获取值,切片语法,赋值,删除)
# 获取值
value = s[2]  # 获取索引为2的值
print(s['a'])  # 返回索引标签 'a' 对应的元素
 获取多个值
subset = s[1:4]  # 获取索引为1到3的值
# 使用自定义索引
value = s['b']  # 获取索引为'b'的值
# 索引和值的对应关系
for index, value in s.items():
    print(f"Index: {index}, Value: {value}")
# 使用切片语法来访问 Series 的一部分
print(s['a':'c'])  # 返回索引标签 'a' 到 'c' 之间的元素
print(s[:3])  # 返回前三个元素
# 为特定的索引标签赋值
s['a'] = 10  # 将索引标签 'a' 对应的元素修改为 10
# 通过赋值给新的索引标签来添加元素
s['e'] = 5  # 在 Series 中添加一个新的元素,索引标签为 'e'
# 使用 del 删除指定索引标签的元素。
del s['a']  # 删除索引标签 'a' 对应的元素
# 使用 drop 方法删除一个或多个索引标签,并返回一个新的 Series。
s_dropped = s.drop(['b'])  # 返回一个删除了索引标签 'b' 的新 Series
属性和方法
# 获取索引
index = s.index
# 获取值数组
values = s.values
# 获取描述统计信息
stats = s.describe()
# 获取最大值和最小值的索引
max_index = s.idxmax()
min_index = s.idxmin()
# 其他属性和方法
print(s.dtype)   # 数据类型
print(s.shape)   # 形状
print(s.size)    # 元素个数
print(s.head())  # 前几个元素,默认是前 5 个
print(s.tail())  # 后几个元素,默认是后 5 个
print(s.sum())   # 求和
print(s.mean())  # 平均值
print(s.std())   # 标准差
print(s.min())   # 最小值
print(s.max())   # 最大值

DataFrame

DataFrame 是 Pandas 中的另一个核心数据结构,用于表示二维表格型数据。

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。

DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

DataFrame 提供了各种功能来进行数据访问、筛选、分割、合并、重塑、聚合以及转换等操作。

特点:

  • 二维结构:可以被看作是一个Excel电子表格或SQL表,也可被视为多个Series对象组成的字典
  • 不同列可以包含不同数据类型
  • 可以拥有行索引和列索引
  • 大小可变
  • 在算数运算或数据对齐时会自动对齐
  • 可以包含缺失数据
  • 支持切片,索引,子集分割
  • 时间序列支持:可以轻松进行时间数据的切片,索引和操作。
  • 可与Matplotlib或Seaborn等可视化库结合使用
  • 可方便地读取和写入数据,支持多种格式,如CSV,Excel,SQL,HDF5
 构造方法
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
使用列表创建
import pandas as pd
data = [['Google', 10], ['Runoob', 12], ['Wiki', 13]]
# 创建DataFrame
df = pd.DataFrame(data, columns=['Site', 'Age'])
# 使用astype方法设置每列的数据类型
df['Site'] = df['Site'].astype(str)
df['Age'] = df['Age'].astype(float)
print(df)

从列表的列表创建:外层列表代表行,内存列表代表列。 

df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]],
                  columns=['Column1', 'Column2', 'Column3'])
使用字典创建
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)
使用ndarrys创建
import numpy as np
import pandas as pd
# 创建一个包含网站和年龄的二维ndarray
ndarray_data = np.array([
    ['Google', 10],
    ['Runoob', 12],
    ['Wiki', 13]
])
# 使用DataFrame构造函数创建数据帧
df = pd.DataFrame(ndarray_data, columns=['Site', 'Age'])
# 打印数据帧
print(df)

 输出:     Site Age
                0  Google  10
                1  Runoob  12
                2    Wiki  13

#提供一个二维Numpy数组
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
使用Series创建
s1 = pd.Series(['Alice', 'Bob', 'Charlie'])
s2 = pd.Series([25, 30, 35])
s3 = pd.Series(['New York', 'Los Angeles', 'Chicago'])
df = pd.DataFrame({'Name': s1, 'Age': s2, 'City': s3})
使用loc属性返回指定行(1行或多行)的数据
# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])
# 返回第一行和第二行
print(df.loc[[0, 1]])
# 返回指定索引对应的某一行
print(df.loc["索引名"])
DataFrame的属性和方法
print(df.shape)     # 形状
print(df.columns)   # 列名
print(df.index)     # 索引
print(df.head())    # 前几行数据,默认是前 5 行
print(df.tail())    # 后几行数据,默认是后 5 行
print(df.info())    # 数据信息
print(df.describe())# 描述统计信息
print(df.mean())    # 求平均值
print(df.sum())     # 求和
访问DataFrame元素
  • 访问列:使用列名作为属性或通过 .loc[ ] , .iloc[ ] 访问,也可以使用标签或位置索引。
  • 访问行:使用行的标签和 .loc[ ] 访问
# 通过列名访问
print(df['Column1'])
# 通过属性访问
print(df.Name)    
# 通过 .loc[] 访问
print(df.loc[:, 'Column1'])
# 通过 .iloc[] 访问
print(df.iloc[:, 0])  # 假设 'Column1' 是第一列
# 访问单个元素
print(df['Name'][0])
# 通过行标签访问
print(df.loc[0, 'Column1'])
修改DataFrame

修改列数据:直接对列进行赋值

df['Column1'] = [10, 11, 12]

添加新列:给新列赋值

df['NewColumn'] = [100, 200, 300]

添加新行:使用 loc、append 或 concat 方法

# 使用 loc 为特定索引添加新行
df.loc[3] = [13, 14, 15, 16]
# 使用 append 添加新行到末尾
new_row = {'Column1': 13, 'Column2': 14, 'NewColumn': 16}
df = df.append(new_row, ignore_index=True)

concat()方法用于合并两个或多个DataFrame

# 使用concat添加新行
new_row = pd.DataFrame([[4, 7]], columns=['A', 'B'])  # 创建一个只包含新行的DataFrame
df = pd.concat([df, new_row], ignore_index=True)  # 将新行添加到原始DataFrame
print(df)
删除DataFrame元素

删除行/列:drop

#列
df_dropped = df.drop('Column1', axis=1)
#行
df_dropped = df.drop(0)  # 删除索引为 0 的行
DataFrame的合并与分割
# 纵向合并
pd.concat([df1, df2], ignore_index=True)
# 横向合并
pd.merge(df1, df2, on='Column1')
#分割
# 长格式转宽格式
df_pivot = df.pivot(index='Column1', columns='Column2', values='Column3')
# 宽格式转长格式
df_melt = df.melt(id_vars='Column1', value_vars=['Column2', 'Column3'])
索引和切片
# 索引和切片
print(df[['Name', 'Age']])  # 提取多列
print(df[1:3])               # 切片行
print(df.loc[:, 'Name'])     # 提取单列
print(df.loc[1:2, ['Name', 'Age']])  # 标签索引提取指定行列
print(df.iloc[:, 1:])        # 位置索引提取指定列

Pandas CSV 文件

CSV其文件以纯文本形式存储表格数据(数字和文本)。

import pandas as pd
df = pd.read_csv('nba.csv')
print(df.to_string())

to_string()用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替。

我们也可以使用 to_csv() 方法将 DataFrame 存储为 csv 文件:

df.to_csv('site.csv')
数据处理
  • head(n) 用于读取前n行,默认5
  • tail(n) 用于读取尾部的n行
  • info() 返回表格的一些基本信息

【(学习自用)参考菜鸟教程】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值