python学习笔记七:DataFrame

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一样

猜你喜欢

转载自blog.csdn.net/qq_24946843/article/details/83414417
今日推荐