【A-003】python数据分析与机器学习实战 Python科学计算库 Pandas数据分析处理库(四)DataFrame数据结构

版权声明:转载请声名出处,谢谢 https://blog.csdn.net/u010591976/article/details/82382223

pandas数据结构:DataFrame

引入:
在上一节中已经介绍过了Series对象,Series对象可以理解为由一列索引和一列值,共两列数据组成的结构。而DataFrame就是由一列索引和多列值组成的结构,其中,在DataFrame中的每一列都是一个Series对象。

行选择

不管何时,你调用了一个方法返回或者打印一个DataFrame时,最左边的一列必然是索引值,可以通过index属性来直接访问DataFrame的索引值。

import pandas as pd
fandango = pd.read_csv('fandango_score_comparison.csv')
# print(fandango.head(2))  输出前两行
print(fandango.index)  # 打印索引列的值

在Series中,每一个索引都对应着一个值,在DataFrame中,每一个索引则对应着一行的数据,可以通过几种方法来选择多数据

# 选择前五行
fandango[0:5]

# 选择索引号140及其以后的行
fandango[140:]

# 只选择索引号为50的那一行
fandango.loc[50]

# 选择索引号为4590的两行
fandango.loc[[45,90]]

自定义索引 DataFrame.set_index(“作为索引的那一列标签”,”inplace= “,”drop= “)

Pandas可以使用某一列来重新自定义DataFrame的索引,通过set_index()方法来实现,该方法主要有两个参数:

inplace,如果设置为True就不会返回一个新的DataFrame,而是直接修改该DataFrame
drop,如果设置为True,就会移出掉该列的数据

# 把电影名称作为该DataFrame的索引
fandango = pd.read_csv('fandango_score_comparison.csv')
fandango_films = fandango.set_index('FILM', inplace=False, drop=True)

索引值已经变了,并且该DataFrame中也移除了名为FILM的列(该列变成了索引)使用了自定义的索引后,类似于之前的行选择一样进行选择,只是把整数索引换成了电影名称而已

Apply()

apply()方法是运行在Series对象中的,而Pandas中任何单独一列或者单独一行的数据就是一个Series对象,apply()方法中要传递的是一个向量运算方法,如果该方法返回一个单独的值(譬如将整列(行)的值相加),那么就会返回一个Series,该Series保存的是全部列的运行结果

import numpy as np

# 得出每一列的数据类型
types = fandango_films.dtypes

# 选择具有浮点数据的那些列
float_columns = types[types.values == 'float64'].index
float_df = fandango_films[float_columns]

Apply()函数中 匿名函数的应用
如果要在行上使用apply()方法,只要指定参数axis = 1即可

# 对选择的列计算总分,在lambda中的x是一个Series,代表了某一列
#np.sum()合并操作,一列计算的结果为一个数值数值,对整个数据dataframe,返回类型为Series
count = float_df.apply(lambda x: np.sum(x))

#如果该方法没有合并运算结果(譬如将整列(行)的值都分别乘2),一列计算的结果为series的一列值,对整个数据dataframe,返回的类型返回一个DataFrame。
double_df = float_df.apply(lambda x: x*2)

# 计算每部电影的平均分
means = float_df.apply(lambda x: np.mean(x), axis = 1)

猜你喜欢

转载自blog.csdn.net/u010591976/article/details/82382223