1.了解数据
head()与 tail()
当数据表中包含了数据行数过多时,而我们又想看一下每一列数据都是什么样的数据时,
就可以把数据表中前几行或后几行数据显示出来进行查看:
head()方法返回前 n 行(观察索引值),显示元素的数量默认是 5,但可以传递自定义数值
tail()方法返回后 n 行观察索引值),显示元素的数量默认是 5,但可以传递自定义数值
import pandas as pd
df = pd.read_excel("stu_data.xlsx")
# 查看前几行数据,默认是5
df.head(10)
# 查看后几行数据,默认是5
df.tail()
info()
熟悉数据的第一点就是看下数据的类型,不同的数据类型的分析思路是不一样的,比如说
数值类型的数据就可以求均值,但是字符类型的数据就没法求均值了。
info()方法查看数据表中的数据类型,而且不需要一列一列的查看,
info()可以输出整个表 中所有列的数据类型。
# 查看数据类型
df.info()
shape
熟悉数据的第二点就是看下数据表的大小,即数据表有多少行,多少列 。
shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索
引和列索引计算在内。
# 查看数据表的大小
df.shape
describe()
熟悉数据的第三点就是掌握数值的分布情况,即均值是多少,最值是多少,方差及分位数
分别是多少 。
describe()方法就是可以就可以获取所有数值类型字段的分布值。
# 查看数据所有数值类型字段的分布值
df.describe()
2.列操作
2.1 修改变量列
import pandas as pd
df = pd.read_excel('stu_data.xlsx')
# 修改变量列
# 方法1:columns(适用于变量列少的,必须把全部的列名称写入,不进行修改的就填如原名称)
print('获取所有修改前的列名称:\n',df.columns)
# 修改
df.columns = ['学号1', '性别1', '身高1', '体重1', '支出', '开设', '课程', '软件1']
print('获取所有修改后的列名称:\n',df.columns)
# 方法2:使用rename,注意:rename使用时必须添加inplace=True或者保存到一个变量中,因为他是返回一个新的表
# rename(columns={'旧列名称':'新列名称'})
print('获取所有修改前的列名称:\n',df.columns)
# 修改1: 不使用inplace
df.rename(columns={'学号1':'学号2','性别1':'性别2'})
print('获取所有修改后的列名称(修改1: 不使用inplace):\n',df.columns)
# 修改2:使用inplace
df.rename(columns={'学号1':'学号2','性别1':'性别2'},inplace=True)
print('获取所有修改后的列名称(修改2: 使用inplace):\n',df.columns)
2.2筛选变量列
# 1.选择一列数据方法
# 1.1 方法1
print('选择一列数据方法1:\n',df.课程)
# 1.2 方法2
print('选择一列数据方法2:\n',df['课程'])
# 2. 选择多列(DataFrame输出单列)
# 2.1 选择多列DataFrame
print('2.1 选择多列DataFrame:\n',df[['学号2','性别2']])
# 2.2 DataFrame输出单列
print('2.2 DataFrame输出单列:\n',df[['学号2']])
2.3列操作删除变量列
# 方法1:drop
# df.drop(
# index/columns = 准备删除的行/列标签,多个时用列表形式提供
# inplace = False 是否直接更改原数据框中的数据!!!!!默认是不修改,这也是为什么删除了,但是数据表中删除失败的原因
# )
# 删除单列数据
df.drop(columns='学号2',inplace=True)
# 删除多列数据
df.drop(columns=['性别2','身高1'],inplace=True)
# 方法2:del
# del data['column-name'] 直接删除原数据框相应的一列,建议少用
del df['支出']
df
2.4列操作添加变量列
df = pd.read_excel('stu_data.xlsx')
# 添加变量列
# 1.根据新数据添加列(对应索引添加)
df['new_col'] = pd.Series([1,2,3,4,5,6,7],index=[1,2,3,4,5,6,7])
# 2.根据原数据计算后添加(身高/体重)
df['身高体重之比'] = df['身高']/df['体重']
df
3.数据类型转换
Pandas 支持的数据类型具体类型是 Python, Numpy 各种类型的混合,可以比下表分的更细
- float
- int
- string
- bool
- datetime64[nsr] datetime64[nsr,tz] timedelta[ns]
- category 分类
- object 文本或字符串
import pandas as pd
df = pd.read_excel('stu_data.xlsx')
# 查看数据类型
# 方法1:查看所有的数据类型包括空值、数量
print('方法1:查看所有的数据类型包括空值、数量:\n', df.info())
# 方法2:只查看数据类型
print('方法2:只查看数据类型(全部数据):\n', df.dtypes)
print('方法2:只查看数据类型(指定列的数据):\n', df.学号.dtypes)
# df.astype(
# dtype :指定希望转换的数据类型,可以使用 numpy 或者 python 中的数据类型: int/float/bool/str
# copy = True :是否生成新的副本,而不是替换原数据框, 默认是不替换原数据
# errors = 'raise' : 转换出错时是否抛出错误,
# raise/ ignore )
# 为了方便测试,这里统一不替换原数据
# 转换全部表的数据类型
print('转换全部表的数据类型后的数据类型:\n',df.astype('str').dtypes)
# 转换一行的数据类型
print('转换一行的数据类型:\n',df['学号'].astype('int').dtypes)
# 转化多行的数据类型
print('转化多行的数据类型:\n',df[['学号','身高','体重']].astype('int').dtypes)
# 出现异常时处理(默认时给出报错,这里测试忽略)
print('出现异常时处理(默认时给出报错,这里测试忽略):\n',df['课程'].astype('int',errors='ignore').dtypes)
旧版本方法:
pd.to_datetime ()
pd.to_timedelta ()
pd.to_numeric ()
df.to_string()
pd. to_numeric (df .cloumn)
可以通过 df. apply 来批量逬行多列的转换