pandas库的学习与理解(新手向)

1.概述

Pandas 是 Python 语言的一个扩展程序库,用于数据分析。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据

Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征

2.安装

可以通过pycham的解释器库去搜索下载

也可以用Anaconda的命令提示符输入指令下载;

pip install pandas

我是觉得pycham比较好用就是。

3.内置的数据结构

内置两个数据结构:

Series1该结构能够存储各种数据类型,比如字符数、整数、浮点数、Python 对象等,Series 用 name 和 index 属性来描述数据值。Series 是一维数据结构,因此其维数不可以改变
DataFrame2DataFrame 是一种二维表格型数据的结构,既有行索引,也有列索引。行索引是 index,列索引是 columns。 在创建该结构时,可以指定相应的索引值

3.1.Series

Pandas Series 类似表格中等一个列(column),类似于一维数组,可以保存任何数据类型 Series 由索引(index)和列组成,函数:

pandas.Series(data,index,dtype)

data:一组数据(ndarray 类型)

data:一组数据(ndarray 类型) index:数据索引标签,如果不指定,默认从 0 开始

data:一组数据(ndarray 类型) index:数据索引标签,如果不指定,默认从 0 开始 dtype:数据类型,默认会自己判断

copy:表示对 data 进行拷贝,默认为 False

3.1.1 创建Series对象
import pandas as pd

# 从列表创建 Series
s = pd.Series([1, 3, 5, 7, 9])

# 从字典创建 Series
s = pd.Series({'a': 1, 'b': 2, 'c': 3})

 series_one = pd.Series(data=array_one, index=index)#()内包括创建的对象以及索引
3.1.2 标量创建对象
def four():
    result = pd.Series(data=5,index=[1,2,3,4,5])
    print('标量创建 Series 对象:')
    print(result)

3.1.4 Series的常用属性
axes以列表的形式返回所有行索引标签
dtype返回对象的数据类型
empty返回一个布尔值,用于判断数据对象是否为空
ndim返回输入数据的维数
size返回输入数据的元素数量
values以 ndarray 的形式返回 Series 对象
index返回一个RangeIndex对象,用来描述索引的取值范围

3.2  DataFrame

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

        DataFrame 的每一行数据都可以看成一个 Series 结构,只不过,DataFrame 为这些行中每个数据值增加了一个列标签。

        用法:

pd.DataFrame( data, index, columns, dtype, copy)

        data:一组数据(ndarray、series, map, lists, dict 等类型)

        index:索引值,或者可以称为行标签

         coumns:列标签

        RangeIndex: (0, 1, 2, …, n)

         dtype:数据类型

        copy:默认为 False,表示复制数据 data

3.1.5 常用方法

print(s.head())#获取series对象的前n行数据,默认n=5(根据对象内的数据来定)


print(s.tail(3))#获取series对象的后n行数据,默认n=5(根据对象内的数据来定,此处为后3行)


print(s.isnull())#判断series对象内的元素是否为None,是就Flase,否就True。

print(s.notnull())#判断对象内的元素是否不为None,是就Ture,否就Flase


print(s[s.notnull()])#此处为取出不为None的数据

3.2.1 创建DataFrame对象

pd.DataFrame( data, index, columns, dtype, copy)

在表达式中:

data:一组数据(ndarray、series, map, lists, dict 等类型)

index:索引值,或者可以称为行标签 coumns:

列标签,默认为 RangeIndex (0, 1, 2, …, n)

dtype:数据类型 copy:

默认为 False,表示复制数据 data

创建DataFrame对象有很多方法

常用的是:

  • 列表

  • 字典

  • Series

  • Numpy ndarrays

  • 另一个 DataFrame

3.2.1 用列表创建
 data = ['小明','小红','小紫']
    column = ['name']
    result = pd.DataFrame(data=data,columns=column)
    print(result)
3.2.2 列表嵌套列表
def three():
    data = [['小米', 18], ['小红', 19], ['小紫', 20]]
    result = pd.DataFrame(data=data,columns=['name','age'])
    print(result)

不咋实用。。。

3.2.3 字典创建 DataFrame 对象
def five():
    data = {"name":['小米','小红','小紫'],"age":[18,19,20]}
    result = pd.DataFrame(data=data)
    print(result)

也可以连续设置多个键值,多个元素。

这个好用

3.2.4 Series 创建 DataFrame 对象
def seven():
    data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
    result = pd.DataFrame(data=data)
    print(result)

4. 列索引操作

4.1 选取操作
def eight():
    data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
    result = pd.DataFrame(data=data)
    print(result)
    print(result['one'])

可以用列标索引选取一列,也可以用行标索引选取一行数据

4.2 添加数据

print("使用 df['列'] = 值,插入新的数据列:")

在指定的位置插入新列

        使用insert方法在指定位置插入新列,参数:

  • loc: 插入位置的列索引。

  • column: 新列的名称。

  • value: 要插入的 Series。

concat 添加行数据

用于连接多个Dataframe或Series数据

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

参数:

        objs:列表,指要连接的数据,表示要合并多个Dataframe

        axis:指定连接的方向,axis=0表示按行连续方向连接,axis=1表示按列。

        ignore——index:如果为Ture表示忽略原来的航索引,重新生成行索引

        join:指定连接方式,other表示并集,inner表示交集

        join=inner时,如果按反方向连续,则获取列的交集,如果按列方向连续,则获取行的就交集

        如果Dataframe和Series进行连接,要连接的Series会转化成Dataframe进行连接。

4.3 修改数据
df.insert(1,'password',pd.Series([111,111,111]))
    #修改某一列的数据,此处为修改password
    df['password'] = pd.Series(['123','123','213'])
4.4 删除数据

通过drop方法删除 DataFrame 中的数据,默认情况下,drop() 不会修改原 DataFrame,而是返回一个新的 DataFrame。

df.drop(labels=["id"],axis=1,inplace=True)
    print(df)

#drop:删除列
#labels:要删除的列或行[标签]
#axis:轴,axis=0,按行删除,axis=1,按列
#inplace:是否在原Datafranme上删除,为Datafranme上删除,为False则返回一个新的Dataframe

5.索引操作

5.1 loc 选取数据

df.loc[] 只能使用标签索引,不能使用整数索引。当通过标签索引的切片方式来筛选数据时,它的取值前闭后闭,也就是只包括边界值标签(开始和结束)

    loc方法返回的数据类型:

        1.如果选择单行或单列,返回的数据类型为Series

        2.选择多行或多列,返回的数据类型为DataFrame

5.2 iloc选取数据
DataFrame.iloc[row_indexer, column_indexer]
  • row_indexer:行位置

  • column_indexer:列位置

可以用通过行列的整数索引

5.3 切片索引

与列表的操作方法一致

添加新行:

用loc方法添加

# 创建一个 DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data, index=['a', 'b', 'c', 'd'])

# 添加新行 'e'
df.loc['e'] = [17, 18, 19, 20]

删除行:

删除行也是用drop方法

# 删除数据行
def sixteen():
    data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
    result = pd.DataFrame(data=data)
    print("原数据:")
    print(result)
    print("drop 函数删除值:", )
    result2 = result.drop('a')
    print(result2)
5.4 常用属性及方法

DataFrame 的属性和方法,与 Series 基本相同

名称属性和方法描述
T行和列转置。
axes返回一个仅以行轴标签和列轴标签为成员的列表。
dtypes返回每列数据的数据类型。
emptyDataFrame中没有数据或者任意坐标轴的长度为0,则返回True。
ndim轴的数量,也指数组的维数。
shape返回一个元组,表示了 DataFrame 维度。
sizeDataFrame中的元素数量。
values使用 numpy 数组表示 DataFrame 中的元素值。
head()返回前 n 行数据。
tail()返回后 n 行数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值