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一样
上一篇: 性能压测前linux操作系统的检查
下一篇: [PHP] 持续交付Jenkins安装
推荐阅读
-
Python学习笔记(二):面向对象编程小实例士兵突击封装案例
-
Python—Numpy学习笔记(二)array的用法
-
机器学习笔记--Python之Numpy
-
Python ORM框架SQLAlchemy学习笔记之数据查询实例
-
机器学习笔记(一):python 模块 numpy
-
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
-
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
-
Python ORM框架SQLAlchemy学习笔记之关系映射实例
-
python网络编程学习笔记(九):数据库客户端 DB-API
-
Python学习笔记--Python 爬虫入门 -17-11 tesseract-OCR