目录
- 文章导航
- 一、事先准备
- 二、数据预览
- 1、查看数据集的大小(长宽)
- 2、查看数据表信息
- 3、查看数据格式
- 4、查看数据表数值
- 5、查看列(字段)名称
- 6、查看前N行数据。默认head()显示前5行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前3行的数据
- 7、查看后N行数据。默认tail()显示后5行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后3行的数据
- 8、head()方法和tail() 方法则是分别显示数据集的前n和后n行数据。如果想要随机看N行的数据,可以使用sample()方法
- 9、汇总数据描述性统计信息,如均值、中位数、最大值、最小值等
- 10、查看空值
- 11、查看哪些列存在缺失值
- 12、将列中为空的个数统计出来
- 三、数据清洗
- 四、数据操作
- 1、replace 将指定位置的字符,替换为给定的字符串
- 2、rank()方法可以实现数据排名
- 3、限制数据范围。比如每月的迟到天数一定是在0-31天之间,clip()
- 4、唯一值,unique()是以数组形式返回列的所有唯一值,而nunique()返回的是唯一值的个数
- 5、apply()函数的功能是将一个自定义函数作用于DataFrame的行或者列;applymap()函数的功能是将自定义函数作用于DataFrame的所有元素。他们通常也与匿名函数lambda一起使用。
- 6、计算字符串长度
- 7、字符串的拼接-cat函数
- 8、replace指定的位置字段的字符
- 9、slice_replace 使用给定的字符串,替换指定的位置的字符
- 10、判断某个字符串是否包含给定字符-contains函数
- 11、判断某个字符串是否以...开头/结尾
- 12、计算给定字符在字符串中出现的次数
- 13、获取指定位置的字符串-get函数
- 14、英文大小写转换
- 15、在字符串的左边、右边或左右两边添加给定字符
- 16、重复字符串几次
- 17、利用正则表达式,去字符串中匹配,返回查找结果的列表
- 18、接受正则表达式,抽取匹配的字符串(一定要加上括号)-extract、extractall函数
- 五、数据筛选
- 六、数据汇总
- 七、统计运算
- 八、数据输出
文章导航
一、事先准备
1、引入依赖
import numpy as np
import pandas as pd
2、导入数据表
df=pd.DataFrame(pd.read_csv('name.csv',header=1))
df=pd.DataFrame(pd.read_excel('d:/name.xlsx'))
3、构造数据集
df ={'姓名':['小明','小黄','小红 ','大美','小香'],
'性别':['男','men','women','女','女']}
二、数据预览
1、查看数据集的大小(长宽)
df.shape
2、查看数据表信息
df.info()
3、查看数据格式
df.dtypes
df['date'].dtype
4、查看数据表数值
df.values
5、查看列(字段)名称
df.columns
6、查看前N行数据。默认head()显示前5行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前3行的数据
df.head(3)
7、查看后N行数据。默认tail()显示后5行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后3行的数据
df.tail(3)
8、head()方法和tail() 方法则是分别显示数据集的前n和后n行数据。如果想要随机看N行的数据,可以使用sample()方法
df.sample(3)
9、汇总数据描述性统计信息,如均值、中位数、最大值、最小值等
df.describe()
10、查看空值
isnull是Python中检验空值的函数,返回的结果是逻辑值,包含空值返回True,不包含则返回False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。
df.isnull()
df['price'].isnull()
11、查看哪些列存在缺失值
df.isnull().any()
12、将列中为空的个数统计出来
df.isnull().sum()
三、数据清洗
1、删除空值
df.dropna(how='any') #去除任何有空值的行
2、使用数字对空值进行填充
df.fillna(50) #用50进行填充
3、使用 price 列的均值来填充
df['price'].fillna(df['price'].mean())
df['price'].fillna(df['price'].mean(),inplace=True) #直接修改原对象
4、针对连续变量,可以用前一个值填充
df.fillna(method="pad")
5、删除重复值
df['city'].duplicated() #保留最先出现的数据,删除后面重复出现的数据
df['city'].drop_duplicates(keep='last') #保留最后出现的数据,删除前面重复出现的数据
6、将特定值替换为缺失值
df.replace(27,pd.NaT)
7、清除字符空格
df['city'].map(str.strip)
8、将字段的值修改为int格式
df['price'].astype('int')
df['price'] = df['price'].astype('int') # astype()没有replace=True的用法,想要在原数据上修改,要写成该形式
9、rename()重命名用于更改行列的标签,即行列的索引。可以传入一个字典或者一个函数
df.rename(columns={'排名': 'RANK'}, inplace=True)
10、行列转置,我们可以使用T属性获得转置后的DataFrame
df.T
11、删除列,drop()
df.drop(columns=["RANK"],inplace=True)
12、删除第2行
df.drop(2)
df.drop(df.index[1], inplace=True)
13、删除a字段列
df.drop('a', axis=1)
14、删除第2列
df.drop(df.index[1], inplace=True)
15、删除索引为row2的行
df.drop('row2')
16、删除索引为col2的列
df.drop('col2', axis=1,inplace=True)
17、在数据框中插入一行数据
df.loc[len(df)] =['五年级',77,88] #行从0开始,length从1开始,将最后一行的后一行指定为新数据即为插入
四、数据操作
1、replace 将指定位置的字符,替换为给定的字符串
df['性别'].replace('women','女',inplace=True)
df['性别'].replace('men','男',inplace=False)
2、rank()方法可以实现数据排名
df["排名"] = df['年龄'].rank(method="dense", ascending=False)
3、限制数据范围。比如每月的迟到天数一定是在0-31天之间,clip()
df["迟到天数"] = df["迟到天数"].clip(0,31)
4、唯一值,unique()是以数组形式返回列的所有唯一值,而nunique()返回的是唯一值的个数
df["年龄"].unique()
df["年龄"].nunique()
5、apply()函数的功能是将一个自定义函数作用于DataFrame的行或者列;applymap()函数的功能是将自定义函数作用于DataFrame的所有元素。他们通常也与匿名函数lambda一起使用。
df["年龄"].apply(lambda x: x+1)
6、计算字符串长度
df["性别"].str.len()
7、字符串的拼接-cat函数
df["姓名"].str.cat(df["家庭住址"],sep='-'*1)
8、replace指定的位置字段的字符
df["收入"].str.replace("\d+\.\d+","正则")
9、slice_replace 使用给定的字符串,替换指定的位置的字符
df["电话号码"].str.slice_replace(4,8,"*"*4)
10、判断某个字符串是否包含给定字符-contains函数
df["家庭住址"].str.contains("广")
df['家庭住址'].str.contains('广', na=False)
11、判断某个字符串是否以…开头/结尾
df["姓名"].str.startswith("黄")
df["英文名"].str.endswith("e")
12、计算给定字符在字符串中出现的次数
df["电话号码"].str.count("3")
13、获取指定位置的字符串-get函数
df["姓名"].str.get(-1)
df["身高"].str.split(":")
df["身高"].str.split(":").str.get(0)
14、英文大小写转换
df["英文名"].str.upper()
df["英文名"].str.lower()
15、在字符串的左边、右边或左右两边添加给定字符
df["家庭住址"].str.pad(10,fillchar="*") #左边
df["家庭住址"].str.pad(10,side="right",fillchar="*") #右边
df["家庭住址"].str.center(10,fillchar="*") #两边
16、重复字符串几次
df["性别"].str.repeat(3)
17、利用正则表达式,去字符串中匹配,返回查找结果的列表
df["身高"]
df["身高"].str.findall("[a-zA-Z]+")
18、接受正则表达式,抽取匹配的字符串(一定要加上括号)-extract、extractall函数
df["身高"].str.extract("([a-zA-Z]+)")
五、数据筛选
1、按索引选择行
df.loc[[0,1]] # 选择索引是0和1的记录
df.loc[[0,1],['班级']] # 选择索引是0和1,列名为班级的记录
2、按数字索引选择行
df.iloc[[0]] # 选择索引是0的记录
3、使用切片选择行
df[:5] #选择索引从0到5的记录
4、对数据框的行进行筛选
df[df["男生数量"]>23] #筛选男生数量大于23的记录
5、对数据框的行和列进行筛选
df.loc[df["男生数量"]>23,["班级"]] #筛选男生数量大于23的记录的班级字段
6、筛选姓名中包含“黄”这个字符的所有行
df[df['姓名'].str.contains('黄')]
7、query()查询方法也可以用来筛选数据,比如查询“语文”成绩大于“数学”成绩的行记录
df.query("语文 > 数学")
df.query('city==["beijing","shanghai"]')
8、select_dtypes()方法可用于筛选某些数据类型的变量或列。举例,我们仅选择具有数据类型’int64’的列。
df.select_dtypes("int64")
9、isin()接受一个列表,判断该列中元素是否在列表中
name_list = ["张三", "李四"]
df[df["姓名"].isin(name_list)]
10、使用“与”条件进行筛选
df.loc[(df['age'] > 25) & (df['city'] == 'beijing'), ['id','city','age','category','gender']]
11、使用“或”条件筛选
df.loc[(df['age'] > 25) | (df['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age'])
12、使用“非”条件进行筛选
df.loc[(df['city'] != 'beijing'), ['id','city','age','category','gender']].sort(['id'])
六、数据汇总
1、对所有列进行计数汇总
df.groupby('city').count()
2、对特定的列进行计数汇总
df.groupby('city')['id'].count()
3、对city字段进行汇总并计算price的合计和均值
df.groupby('city')['price'].agg([len,np.sum,np.mean])
4、数据透视表
pd.pivot_table(df,index=["city"],values=["price"],columns=["size"],aggfunc=[len,np.sum],fill_value=0,margins=True)
七、统计运算
1、计数
df['男生数量'].count()
2、求和
df['男生数量'].sum()
3、平均值
df['男生数量'].mean()
4、中位数
df['男生数量'].median()
5、众数
df['男生数量'].mode()
6、最大值
df['男生数量'].max()
7、某一行的最大值
df.loc[2,['男生数量','女生数量']].max()
8、最小值
df['男生数量'].min()
9、某一行的最小值
df.loc[2,['男生数量','女生数量']].min()
10、标准差
df['男生数量'].std()
11、方差
df['男生数量'].var()
12、计算两个字段间的协方差
df['price'].cov(df['m-point'])
13、数据表中所有字段间的协方差
df.cov()
14、两个字段的相关性分析
df['price'].corr(df['m-point']) #相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关
15、数据表的相关性分析
df.corr()
16、分位数
df['语文'].quantile()
17、偏态系数
df['语文'].skew()
18、峰态系数
df['语文'].kurt()
19、累加
df["语文总分"] = df['语文'].cumsum()
八、数据输出
1、输出到 excel 格式
df.to_excel('d:/excel_to_python.xlsx', sheet_name='bluewhale_cc')
2、输出到 CSV 格式
df.to_csv('excel_to_python.csv')