pandas(Python Data Analysis Library)是基于numpy的数据分析模块,提供了大量标准数据模型和高效操作大型数据集所需要的工具,可以说pandas是使得Python能够成为高效且强大的数据分析环境的重要因素之一。它最主要的两个数据结构是series和DataFrame。本文主要介绍series的一些操作。
Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型
#pandas的series的数据结构
pandas.Series( data, index, dtype, name, copy)
下面我将介绍pandas的series的方法:
方法 | 功能描述 |
---|---|
pandas.series(list,index=[]) | 创建值 |
S1.value | 查看值 |
S1[‘index值’] | 查看索引index值 |
S1[条件] | 根据索引取值 |
S.to_dict() | 把series转换成字典输出 |
pandas.isnull(S1) | 判断series的元素是否为空值 |
S1.name=‘字符’ | 给series赋予名字 |
S1.index.name=‘demo_index’ | 给索引取名字 |
series.isnull() | 判断某个列表中是否含有空值 |
series.is_unique | 判断某个系列中的值是否存在重复 |
series.value_counts() | 统计某个系列里某个元素的出现次数 |
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
#DataFrame的数据结构
pandas.DataFrame( data, index, columns, dtype, copy)
下面我将介绍pandas的DataFrame的方法:
语句 | 功能描述 |
---|---|
pandas。FDataFrame(data,columns=[],index=[]) | 创建数据框 |
pd.read_csv() | 将CSV文件的数据导入到内存中,快速构建数据库 |
pd.concat() | 按横向或纵向合并两个pandas数据结构 |
pd.get_dummies() | 将类别变量转变为独热编码 |
DataFrame.mean() | 按行或按列计算平均值 |
DataFrame.dropna() | 删除所有缺失数据的行或列 |
DataFrame.drop_duplicates | 删除所有重复的行 |
DataFrame.head() | 默认返回数据框中前五行 |
DataFrame.tail() | 默认返回数据框中最后五行 |
CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。
函数 | 描述 |
---|---|
read_csv(path) | 读取CSV文件 |
to_string() | 将文件变成字符流 |
to_csv() | 将其他数据结构转成CSV文件 |
head(n) | 读取前面的 n 行,如果不填参数 n ,默认返回 5 行 |
tail( n ) | 用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行 |
info() | 返回表格的一些基本信息 |
JSON(JavaScript Object Notation,JavaScript 对象表示法),是存储和交换文本信息的语法,类似 XML。
函数 | 描述 |
---|---|
read_json() | 读取json文件 |
to_string() | 将文件变成字符流 |
json_normalize() | 将内嵌的数据完整的解析出来 |
函数 | 描述 | 例程 |
---|---|---|
cat函数 | 主要用于字符串的拼接 | df[“姓名”].str.cat(df[“家庭住址”],sep=’-’*3) |
contains函数 | 主要用于判断某个字符串是否包含给定字符 | df[“家庭住址”].str.contains(“广”) |
startswith函数 | 主要用于判断某个字符串是否以…开头 | df[“姓名”].str.startswith(“黄”) |
endswith函数 | 主要用于判断某个字符串是否以…结尾 | df[“英文名”].str.endswith(“e”) |
endswith函数 | 主要用于计算给定字符在字符串中出现的次数 | df[“电话号码”].str.count(“3”) |
get函数 | 主要用于获取指定位置的字符串 | df[“姓名”].str.get(-1) |
len函数 | 主要用于计算字符串长度 | df[“性别”].str.len() |
upper函数 | 主要用于英文大小写转换 | df[“英文名”].str.upper() |
lower函数 | 主要用于英文大小写转换 | df[“英文名”].str.lower() |
pad+side参数/center函数 | 主要用于在字符串的左边、右边或左右两边添加给定字符 | df[“家庭住址”].str.center(10,fillchar="*") |
repeat函数 | 主要用于重复字符串几次 | df[“性别”].str.repeat(3) |
slice_replace函数 | 主要用于使用给定的字符串,替换指定的位置的字符 | df[“电话号码”].str.slice_replace(4,8,"*"*4) |
replace函数 | 主要用于将指定位置的字符,替换为给定的字符串 | df[“身高”].str.replace(":","-") |
split方法+expand参数 | 主要用于将一列扩展为好几列 | df[[“身高描述”,“final身高”]] = df[“身高”].str.split(":",expand=True) |
strip、rstrip、lstrip函数 | 主要用于去除空白符、换行符 | df[“姓名”] = df[“姓名”].str.strip() |
extract、extractall函数 | 主要用于接受正则表达式,抽取匹配的字符串(一定要加上括号) | df[“身高”].str.extractall("([a-zA-Z]+)") |
如果我们要删除包含空字段的行,可以使用 dropna() 方法,语法格式如下:
#清洗空值
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
Pandas使用 mean()、median() 和 mode() 方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)。
数据格式错误的单元格会使数据分析变得困难,甚至不可能。我们可以通过包含空单元格的行,或者将列中的所有单元格转换为相同格式的数据。
数据错误也是很常见的情况,我们可以对错误的数据进行替换或移除。
如果我们要清洗重复数据,可以使用 duplicated() 和 drop_duplicates() 方法。如果对应的数据是重复的,duplicated() 会返回 True,否则返回 False。