欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python学习笔记七:DataFrame

程序员文章站 2022-06-03 18:52:27
...

1.Series是ndarray的升级,而DataFrame是Series的升级,从一维拓展到多维

DataFrame的属性:index,colums,values,shape

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import matplotlib.pyplot as plt

df = pd.read_csv('admissions.csv')
print(df.head())

gpa = df['gpa']#是一个Series
print(gpa.head())

print(type(df))
print(type(gpa))

print(df.index,df.columns,df.values,df.values.shape)

2.DataFrame的创建

最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一列的名称,以字典的值(一个数组)作为每一列。此外,DataFrame会自动加上每一行的索引(和Series一样)。

同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN

#使用字典创建
df = DataFrame({'height':[175,180,169,188],'age':np.random.randint(18,25,size=4),
                'sex':['男','女','女','男']},columns=['height','age','sex','weight'],index = list('ABCD'))

#使用属性创建
df = DataFrame(data=np.array([[150,0],[150,0],[150,0],[300,0]]),columns=['张三','李四'],
               index=['语文','数学','英语','理综'])

3.DataFrame的索引和切片

(1).对列进行索引:

通过类似字典的方式

通过属性的方式

可以将DataFrame的列获取为一个Series,返回的Series拥有原DataFrame相同的索引,且name属性也有了,就是相应的列名

(2).对行进行索引:

使用.loc[]加index来进行索引

使用.iloc[]加整数来进行索性

#对列索引
df['age'] #通过字典方式对列索引,检索列返回值是一个Series
df.sex #通过属性对列列索引,对于DataFrame而言,它的列名就相当于它的属性

#对行索引
df.loc['A'] #显示索引,返回一行是一个Series
df.iloc[1] #隐式索引
df.loc[['A','B']] #返回多行,将多行索引以列表的形式传入,返回的是一个DataFrame

#对元素索引
df['age']['A']或df['age'].loc['A'] #显式索引,按列,可对其进行修改
df.loc['A']['sex'] #按行
df.values[2,0] #因为values是一个ndarray,所以也可以通过访问数组的方式访问元素

#行切片,列没有切片
df.loc['A':'C'] #显式切片,左闭右闭
df.iloc[1:3] #隐式切片,左闭右开

4.DataFrame的运算

#DataFrame与DataFrame的运算
df1 = DataFrame(np.random.randint(0,150,size=(4,4)),index=['张三','李四','王五','赵六'],
                columns=['语文','数学','英语','python'])
df2 = DataFrame(np.random.randint(0,150,size=(5,4)),index=['张三','李四','王五','赵六','童七'],
                columns=['语文','数学','英语','python'])

#使用pathon自带的相加
df1+df2 #没有对应索引的一行为NaN

#使用DataFrame.add方法的相加
df1.add(df2,fill_value=0) #将没有对应索引的一行添加一相同索引,其元素值用fill_value的值填充


#DataFrame与Series的运算
ss1 = df3.python #提取一列
df3.add(ss,axis='index') #按DataFrame的行索引相加,则Series的index要与DataFrame的index一样

ss2 = df3.loc['张三'] #提取一行
df3.add(ss2,axis='columns') #按DataFrame的列索引相加,则Series的index要与DataFrame的columns一样

 

相关标签: DataFrame