网站建设需要服务器么,购物网站主页模板,大连广告设计与制作公司,南京网站建设 雷仁网络目录 1. 认识 Pandas2. 安装和导入 Pandas3. Pandas 数据结构4. Pandas 基本功能5. Pandas 数据分析 1. 认识 Pandas
Pandas 是 Python 的核心数据分析支持库#xff0c;提供了快速、灵活、明确的数据结构#xff0c;旨在简单、直观地处理关系型、标记型数据。
Pandas 的出… 目录 1. 认识 Pandas2. 安装和导入 Pandas3. Pandas 数据结构4. Pandas 基本功能5. Pandas 数据分析 1. 认识 Pandas
Pandas 是 Python 的核心数据分析支持库提供了快速、灵活、明确的数据结构旨在简单、直观地处理关系型、标记型数据。
Pandas 的出现主要是为了解决其他编程语言、科研环境的痛点。它是处理数据的理想工具处理数据的速度极快使数据预处理、清洗、分析工作变得更快、更简单被广泛应用于金融领域。处理数据一般分为3个阶段数据整理与清洗、数据分析与建模、数据可视化与制表。
Pandas 是基于 Numpy 数组构建的科研与其他第三方科学计算支持完美集成专门为处理表格和混杂数据而设计而Numpy更适合处理统一的数值和数组数据。
Pandas 适用于处理以下类型的数据
与SQL或Excel表类似的表格数据。有序和无序非固定频率的时间序列数据。带行列标签的矩阵数据包括同构或异构型数据。任意其他形式的观测、统计数据集数据转入Pandas数据结构时不必事先标记。
2. 安装和导入 Pandas
推荐使用Anaconda安装可以参考 Anaconda 安装配置轻轻松松上手Python安装Anaconda然后使用以下命名安装和导入Pandas
# 安装Pandas
Windows 按住winR 输入 cmdMac 打开Terminal
conda install Pandas
pip install Pandas import pandas as pd # 导入pandas并取别名
print(pd.__version__) # 1.5.13. Pandas 数据结构
Pandas 定义了两种主要数据结构Series 和 DataFrame。
1) Series
Series 是一种类似于一维数组的对象它由一组数据各种Numpy数据类型以及一组与之相映射的数据标签索引组成即index和values两部分可以通过索引的方式选取Series中单个或一组值。创建Series数据的语法格式如下
pd.Series(list,index[])第一个参数可以是list、ndarray也可以是DataFrame中的某一行或某一列。第二个参数是Series中数据的索引可以省略如果第一个参数是字典则字典的键将作为Series的索引。
import numpy as np,pandas as pd
arr1 np.arange(3)
s1 pd.Series(arr1)
print(s1)输出
0 0
1 1
2 2
dtype: int64由于没有数据指定索引于是自动创建一个从0N-1N为数据长度的整型索引。
Series 类型索引、切片、运算的操作类似于ndarray也类似于Python字典类型的操作包括保留字in操作、使用get()方法。Series 和 ndarray之间主要区别在于Series 之间的操作根据索引自动对齐数据。
2) DataFrame
DataFrame 是一个表格型的数据类型每列值类型可以不同是最常用的Pandas对象。有行索引和列索引可以被看作由Series组成的字典共用同一个索引。其中的数据是以一个或多个二维块存放的而不是列表、字典或别的一维数据结构。
创建DataFrame的语法格式和示例如下
# 参数columns和index为指定的列、行索引
pd.DataFrame(data,columns[],index[])# 示例
import pandas as pd
data {state:[Ohio,Ohio,Ohio,Nevada,Nevada,Nevada],year:[2000,2001,2002,2001,2002,2003],pop:[1.5,1.7,3.6,2.4,2.9,3.2]}
# 默认行列索引
df pd.DataFrame(data)
print(df)输出state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2# 指定行列索引
df pd.DataFrame(data,columns[year,state,pop,debt],index[one,two,three,four,five,six])
print(df)输出year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN# 嵌套字典外层字典的键作为列内层字典键作为行索引
import pandas as pd
data {Nevada:{2001:2.4,2002:2.9},Ohio:{2000:1.5,2001:1.7,2002:3.6}}
df pd.DataFrame(data)
print(df)输出Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.54. Pandas 基本功能
1) 数据索引
Series 和 DataFrame 的索引是index类型index对象不可修改可通过索引值标签获取目标数据也可通过索引使序列或数据库的计算、操作实现自动化对齐。索引类型index的常用方法如下
append(idx)连接另一个index对象产生新的index对象。diff(idx)计算差集产生新的index对象。intersetion(idx)计算交集。union(idx)计算并集。delete(loc)删除loc位置处的元素。insert(loc,e)在loc位置增加一个元素。
import pandas as pd
data {Nevada:{2001:2.4,2002:2.9},Ohio:{2000:1.5,2001:1.7,2002:3.6}}
df pd.DataFrame(data)
print(df.index) # Int64Index([2001, 2002, 2000], dtypeint64)
print(df.columns) # Index([Nevada, Ohio], dtypeobject)2) 索引、选取和过滤
可以通过df.loc[]和df.iloc[]操作。
# 语法
df.loc[行标签,列标签] # 第二个参数为空时查询单个或多行的所有列。查询多列多行则两个参数用列表表示
df.iloc[行位置,列位置]
# 示例
import pandas as pd
data {Nevada:{2001:2.4,2002:2.9},Ohio:{2000:1.5,2001:1.7,2002:3.6}}
df pd.DataFrame(data)
print(df)输出Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5print(df.loc[2001,[Nevada,Ohio]])
print(df.iloc[0,:]) 输出
Nevada 2.4
Ohio 1.7
Name: 2001, dtype: float643) 运算
算术运算。根据行列索引对齐后运算运算默认产生浮点数对齐时缺项填充NaN空值。除了可以使用、-、*、/外还可以使用Series 和DataFrame的算术方法如add、sub、mul、div。比较运算。只能比较相同索引的元素不进行补齐产生布尔值。
4) 排序
在排序时任何缺失值默认都被放到末尾。
.sort_index(axis0,ascendingTrue)根据指定轴索引的值进行排序。默认轴axis0ascendingTrue即默认根据0轴的索引值做升序。轴axis1为根据1轴的索引值排序ascendingFalse为降序。
Series.sort_values(axis0,ascendingTrue)只能根据0轴的值排序。DataFrame.sort_values(by,axis0,ascendingTrue)参数by为axis轴上的某个索引或索引列表。
5. Pandas 数据分析
1) 统计分析和相关分析
适用于Series和DataFrame的基本统计分析函数如下如果传入axiscolumns’或axis1将按行进行运算。
.describe()针对各列的多个统计汇总用统计学指标快速描述数据的概要。.sum()计算各列数据的和。.count()计算非NaN值的数量。.mean()/.median()计算数据的算术平均值、算术中位数。.var()/.std()计算数据的方差、标准差。.corr()/.cov()计算相关系数矩阵、协方差矩阵。.corrwith()计算其列或行跟另一个Series或DataFrame之间的相关系数。.min()/.max()计算数据的最小值、最大值。.diff()计算一阶差分对时间序列很有效。.mode()计算众数返回频数最高的那几个。.quantile()计算分位数.isin()用于判断矢量化集合的成员资格。.unique()返回一个Series中唯一值组成的数值。.value_counts()计算一个Series中各值出现的频率。.argmin()/.argmax()计算数据最小值、最大值所在位置的索引位置。.idxmin()/.idxmax()计算数据最小值、最大值所在位置的索引。
2) 分组
DataFrame.groupby()分组函数。pandas.cut()根据数据分析对象的特征按照一定的数值指标把数据分析对象划分为不同的区间部分进行研究以揭示其内在的联系和规律。
3) Pandas 读写文本格式的数据
read_csv从文件、url、文件型对象中加载带分隔符的数据。默认分隔符为逗号。read_table从文件、url、文件型对象中加载带分隔符的数据。默认分隔符为制表符’\t’。read_fwf读取定宽格式数据没有分隔符。read_clipboard读取剪贴板中的数据可以看作read_table的剪贴板。在将网页转换为表格时使用。read_excel从Excel XLS或XLSX file读取表格数据。read_hdf读取Pandas编写的HDF5文件。read_html读取HTML文档中的所有表格。read_json读取json字符串中的数据。read_msgpack二进制格式编码的Pandas数据。read_pickle读取Python pickle格式中存储的任意对象。read_sas读取存储于SAS系统自定义存储的任意对象。read_sql读取SQL查询结果为Pandas的DataFrame。read_stata读取Stata文件格式的数据集。read_feather读取Feather二进制文件格式。
这些函数的选项可以划分为以下几大类
索引将一个或多个列当作返回的DataFrame处理以及是否从文件、用户获取列名。类型推断和数据转换包括用户自定义值的转换、自定义的缺失值标记列表等。日期解析包括组合功能如将分散在多个列的日期时间信息组合成结果中的单个列。迭代支持对大文件中逐块迭代。不规范数据问题跳过一些行、页脚、注释或其他一些不重要的东西。
4) 数据清洗和准备数据分析和建模大部分时间都用在数据准备上如加载、清洗、转换以及重塑。
5) 处理缺失数据
在数据分析中缺失数据经常发生对于数值数据NaNnp.nan表示缺失数据也可将缺失值表示NA。常用函数如下
.info()查看数据的信息包括每个字段的名称、非空数量、字段的数据类型。.isnull()返回一个同样长度的值为布尔型的对象表示哪些值时缺失的。.notnull()为其否定形式。.dropna()删除缺失数据。默认删除含有缺失值的行如果想删除含有缺失值的列需要传入axis 1 作为参数如果想要删除全部缺失值的行或列需传入how‘all’。.fillna(value, method,limit,inplace)填充缺失值。value 用于填充的值或字典{‘列2’:1,‘列2’:8,…}method 默认为ffill向前填充bfill向后填充limit为向前或者向后填充的最大填充量inplace 默认返回新对象修改inplaceTrue可以对现有对象直接修改。
6) 数据转换
替换值。.replace(old, new)函数可以使用新得数据替换老的数据。删除重复数据。.duplicated()可以判断各行是否是重复行.drop_duplicates()可以删除重复行返回删除后的DataFrame对象。利用函数或字典进行数据转换。Series.map()可以接受一个函数或字典作为参数实现元素级转换以及其他数据清洗工作的便捷方式。
import pandas as pd
data pd.DataFrame({food:[bacon,pulled pork,bacon,ppastrami,corned beef,bacon,pastrami,honey ham,noba lox],ounces:[4,3,12,6,7.5,8,3,5,6]})
meat_to_animal {bacon:pig,pulled pork:pig,pastrami:cow,corned beef:cow,honey ham:pig,nova lox:salmon}
data[animal] data[food].map(meat_to_animal) # 增加一列 animal
print(data)输出food ounces animal
0 bacon 4.0 pig
1 pulled pork 3.0 pig
2 bacon 12.0 pig
3 ppastrami 6.0 NaN
4 corned beef 7.5 cow
5 bacon 8.0 pig
6 pastrami 3.0 cow
7 honey ham 5.0 pig
8 noba lox 6.0 NaNDataFrame 常用函数如下
df.head()查询数据的前5行。df.tail()查询数据的末尾5行。pandas.cut()、pandas.qcut()基于分位数的离散化函数。pandas.date_range()返回一个时间索引。df.apply()沿相应轴应用函数。Series.value_counts()返回不同数据的计数值。df.aggregate()、df.reset_index()重新设置index。