Python数据分析 2-3 DataFrame对象
介绍DataFrame对象的创建,删除列增加列,修改列名索引以及数据显示等操作
1 引入NumPy和Pandas
import numpy as np
import pandas as pd
**2 DataFrame对象的创建
pandas.DataFrame()函数可以返回给定形状和数据类型的数据框,其主要参数如下:
data:数据,其类型可以是ndarray(结构化数组或同构)、Iterable(迭代器)、dic或者直接是DataFrame。
index:行索引。默认为RangeIndex (0, 1, 2, …, n)。
columns:用于生成框架的列标签。默认为RangeIndex (0, 1, 2, …, n)。
dtype:数据类型,可选参数,默认为无。只允许使用一种数据类型,若无,系统自行推断。
copy:布尔型,可选参数{0,1}。从输入复制数据。**
# 列表创建
data=[['Tom',10],['Jerry',12],['Lucy',13]]
df=pd.DataFrame(data=data,
index=["a","b","c"],
columns=['Name','Age'],
dtype=int)
df
#字典
data={'Name':['Tom','Jery','Lucy'],'Age':[10,11,12]}
df = pd.DataFrame(data)
#输出
df
pandas.read_csv()函数从csv文件中读取数据,并返回为一个DataFrame数据框,主要参数如下:
filepath_or_buffer:表示文件所处路径。此参数必须有。
sep:指定分隔符,默认为逗号,。
delimiter:定界符,默认为None,若指定该参数,sep参数失效。
header:指定表头,默认为0(即第一行为表头),若需要没有表头,则header=None。
names:指定列名,用列表表示。
index_col:指定某列数据为索引,默认为None。
prefix:给列名加前缀。默认为None。
encoding:解码方式,乱码时考虑用。默认为None。
# 从数据中读取
df = pd.read_csv(filepath_or_buffer="./dataset/Covid19.csv")
df.head()
**3 删除和添加列
DataFrame.drop()方法从行或列中删除指定的标签,通过指定标签名称和相应的轴,或直接指定索引或列名称,删除行或列。
使用多索引时,可以通过指定级别来删除不同级别上的标签。主要参数如下:
labels:单个标签或类似列表,要删除的索引或列标签。
axis:可选参数,{0或’index’,1或’columns’},默认0,是从索引(0或“ index”)还是从列(1或“ columns”)中删除标签。
index:单个标签或类似列表,指定轴的替代方法。
columns:单标签或类似列表,指定轴的替代方法。
level:int或级别名称,可选,对于MultiIndex,将从中删除标签的级别。
inplace:布尔值,默认为False,如果为False,则返回副本。否则,执行就地操作并返回无。**
# 删除列
df.drop(columns=["cough"],inplace=True)
df
# 删除多列
df.drop(columns=["fever","test_date"],inplace=True)
df
# 新增列
df["test"] = 1
# 添加列
df["test"] = 1 - df["head_ache"]
df
4 修改列名和索引名字
df.columns
Index(['sore_throat', 'shortness_of_breath', 'head_ache', 'corona_result',
'age_60_and_above', 'gender', 'test_indication', 'test'],
dtype='object')
**DataFrame.rename()方法用于更改行列的标签,即行列的索引。可以传入一个字典或者一个函数。主要参数如下:
index:字典或函数,表示待转换的行索引。
columns:类似字典或函数,表示待转换的列索引。
axis:表示轴的名称,可以使用index或columns,也可以使用数字0或1。
copy:表示是否复制底层的数据,默认为False。
inplace:默认为False,表示是否返回新的Pandas对象。如果设为True,则会忽略复制的值。
level:表示级别名称,默认为None。对于多级索引,只重命名指定的标签。**
# 修改列名字
df.rename(columns={"cough11":"cough22", "fever11":"fever22"}, inplace=True)
df.columns
Index(['sore_throat', 'shortness_of_breath', 'head_ache', 'corona_result',
'age_60_and_above', 'gender', 'test_indication', 'test'],
dtype='object')
**DataFrame.replace()方法可以替换某列,也可以替换某行,还可以全表替换。主要参数如下:
to_replace:被替换的值。
value:替换后的值。
inplace:默认为False,表示是否要改变原数据。False是不改变,True是改变。
limit:控制填充次数。
regex:是否使用正则。False是不使用,True是使用,默认为False。**
# 修改列名
df.columns.str.replace("cough22", "13231313")
Index(['sore_throat', 'shortness_of_breath', 'head_ache', 'corona_result',
'age_60_and_above', 'gender', 'test_indication', 'test'],
dtype='object')
# 修改索引
df.rename(index={0:"a", 1:"b"}, inplace=True)
df
5 DataFrame的显示
DataFrame.head()方法显示开始n行。主要参数如下:
n:整型,表示要输出前n行,默认为5
# 显示开始几行
df.head()
DataFrame.tail()函数返回最后n行。主要参数如下:
n:整型,表示要输出最后n行,默认为5。
# 最后几行
df.tail(n=5)
# 最后几行
df