pandas-DataFrame的基本操作

使用python对csv或者是excel文件进行处理的时候,经常会使用到第三方库:pandas,并且在pandas中经常会使用到的是表结构的数据结构:DataFrame(pandas读取csv文件返回的就是DataFrame数据类型),下面是关于DataFrame的一些基本操作

1. 创建DataFrame

创建DataFrame有以下两种常用的方法进行创建:① 列表 ② 字典 ③随机数组

创建data的时候需要调用pandas中的DataFrame函数并且一般需要传入data、index、columns参数,data表示数据,index表示行标签,column表示列标签

列表:一般使用一维列表或者是二维列表创建

arr = [1, 2, 4, 6, 6]
index = [0, 1, 2, 3, 4]
columns = ["colum"]
# data表示数据, index表示行标签, column表示列标签
data = pd.DataFrame(data=arr, index=index, columns=columns)
print(data)

# 使用二维列表来DataFrame
arr = [[1, 2, 3], [3, 4, 5], [4, 5, 6]]
index = [0, 1, 2]
columns = list("abc")
data = pd.DataFrame(data=arr, index=index, columns=columns)
print(data)

arr = [["Apple", 10], ["Banaana", 2], ["Orange", 5]]
index = [1, 2, 3]
columns = ["fruit", "price"]
data = pd.DataFrame(data=arr, index=index, columns=columns)
print(data)

字典:使用字典创建DataFrame的时候键表示的列索引

data = pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
print(data)

data = pd.DataFrame([{'name': 'tom', 'age': 24, 'hometown': 'xz'}, {'name': 'alex', 'age': 34}])
print(data)

numpy数组:使用numpy随机数组创建

# 使用numpy创建Dataframe
data = np.random.randn(4, 5)
index = [i for i in range(4)]
columns = list("abcde")
data = pd.DataFrame(data=data, index=index, columns=columns)
print(data)

2. DataFrame的几个常见的属性

dtypes   列数据类型
ndim     维度
index    行索引
columns  列索引
values   维ndarry的数组

3. 对某一列进行排序(创建的DataFrame需要有列名)

data = pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
print(data)
print(data.sort_values(by="age", ascending=False))

4. loc与iloc函数:获取某一行或者是某一个位置的数据

loc可以通过行标签获取某一行或者是某几行(切片操作)的数据,通过行标签与列标签获取某一行某一列的数据,iloc通过行下标获取某一行、某几行的数据,通过行下标与列下标获取某一行某一列的数据,iloc只能够传入整数或者是切片(前面的i表示的是整数),不能够传递行标签或者是列标签

data = pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
print(data)
# 通过行标签获取某一行的值
print(data.loc["a"])
# 获取行标签为0列标签为name的数据
print(data.loc[0, "name"])
# 获取第0列
print(data.iloc[:, [0]])
# 获取第0行的数据
print(data.iloc[0])
# 使用切片获取前两行的数据
print(data.iloc[:2])
# 获取第0行第1列的数据
print(data.iloc[0, 1])

5. 通过列标签:data["列标签"](在创建DataFrame时候传入了colums属性的时候才可以使用)或者是列下标:data[index](index表示第几列)获取DataFrame的某一列的数据,获取列的类型为pandas.core.series.Series

data = pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
print(data)
print(data["name"])

# 在没有规定columns属性的情况下可以使用data[列下标]来获取对应的列
data = pd.DataFrame(data=[[1, 2], [3, 4]])
print(data[0])
import pandas as pd
import numpy as np
if __name__ == '__main__':
    # 1. 使用列表来创建DataFrame
    arr = [1, 2, 4, 6, 6]
    index = [0, 1, 2, 3, 4]
    columns = ["colum"]
    # data表示数据, index表示行标签, column表示列标签
    data = pd.DataFrame(data=arr, index=index, columns=columns)
    print(data)

    # 使用二维列表来创建DataFrame
    arr = [[1, 2, 3], [3, 4, 5], [4, 5, 6]]
    index = [0, 1, 2]
    columns = list("abc")
    data = pd.DataFrame(data=arr, index=index, columns=columns)
    print(data)

    arr = [["Apple", 10], ["Banaana", 2], ["Orange", 5]]
    index = [1, 2, 3]
    columns = ["fruit", "price"]
    data = pd.DataFrame(data=arr, index=index, columns=columns)
    print(data)

    # 使用numpy创建Dataframe
    data = np.random.randn(4, 5)
    index = [i for i in range(4)]
    columns = list("abcde")
    data = pd.DataFrame(data=data, index=index, columns=columns)
    print(data)
    print("-" * 50)

    # 2. 使用字典创建DadaFrame, 字典的key是列索引
    data = pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
    print(data)

    data = pd.DataFrame([{'name': 'tom', 'age': 24, 'hometown': 'xz'}, {'name': 'alex', 'age': 34}])
    print(data)

    # 3. DataFrame的基本属性
    print(data.shape[0], data.shape[1])
    # dtypes列数据类型
    print(data.dtypes)
    print("*" * 50)

    # 对某一列进行排序
    print(data.sort_values(by="age", ascending=False))

    # 4. 索引与切片
    print(data.loc[0, "name"])
    print(data.iloc[:, [0]])
    print("*" * 50)
    # 获取对应的列
    print(data["name"])
    print("*" * 50)

6. 取出某一列中的符合某个条件的行:使用条件表达式来获取(先获取列然后再获取行)

import pandas as pd
import numpy as np
if __name__ == '__main__':
    arr = [[1, 2], [3, 4], [5, 6]]
    data = pd.DataFrame(data=arr)
    # print(data)
    # 取出第0列中数值大于2的行, 如果在创建DataFrame的时候没有规定列标签那么可以使用data[n]的方式来获取第n列的值, 如果规定了columns属性值那么需要使用data["列标签"]的方式来获取
    print(data[data[0] > 2])

 

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pandas DataFrame 是 Python 中使用最广泛的数据结构之一,它采用表格的形式存储数据,类似于 Excel 中的表格。DataFrame 可以进行多种操作,如数据整理、切片、查询、聚合等。 1. 创建 DataFrame 可以通过 pandas.read_csv(),pandas.read_excel() 等方法导入已有数据文件,也可以手动创建。使用 pandas.DataFrame() 方法,将数据数组传递给 DataFrame 的构造函数即可创建 DataFrame。例如,以下创建一个有两个列的 DataFrame: ```python import pandas as pd data = {'name': ['Tom', 'Jerry'], 'age': [25, 30]} df = pd.DataFrame(data) ``` 2. 基本信息查看 使用 df.head() 和 df.tail() 方法可以查看 DataFrame 的头几行或尾几行数据,默认显示前五行或后五行。 使用 df.shape 可以查看行列数。 使用 df.info() 可以查看每一列的名字、数据类型和缺失值数量。 3. 数据选择与切片 可以使用 df.loc[] 和 df.iloc[] 方法选择行和列。 df.loc[] 通过标签选择数据,可以选择一行或多行数据。例如,选取第一行数据: ```python df.loc[0] ``` df.iloc[] 通过位置选择数据,也可以选择一行或多行。例如,选取第一行数据: ```python df.iloc[0] ``` 可以通过 df["column_name"] 选取列。例如,以下选取列 name: ```python df["name"] ``` 4. 数据过滤与查询 可以通过布尔索引过滤数据。例如,以下选取 age 大于 25 的行: ```python df[df["age"] > 25] ``` 可以使用 df.query() 方法查询数据。例如,以下查询名字为 Tom 的行: ```python df.query("name == 'Tom'") ``` 5. 数据处理与聚合 可以使用 df.apply() 方法处理数据。例如,以下将 age 列中的数据加 10: ```python df["age"] = df["age"].apply(lambda x: x + 10) ``` 可以使用 df.groupby() 方法进行数据聚合。例如,以下对 age 列进行平均数聚合: ```python df.groupby("age")["age"].mean() ``` 以上是 Pandas DataFrame基本操作,包括创建 DataFrame、基本信息查看、数据选择与切片、数据过滤与查询、数据处理与聚合等。通过这些方法可以轻松地对 DataFrame 进行操作,方便地进行数据分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值