利用 python 进行数据分析

这篇博客详细介绍了如何利用Python进行数据分析,包括numpy的基础操作如通用函数、数组统计和随机函数,深入探讨了pandas的Series和Index对象,以及数据加载、存储和规整化方法。此外,还讲解了数据合并、转换、缺失值处理和字符串操作,并介绍了matplotlib的Series.plot方法用于数据可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用 python 进行数据分析

numpy基础

基础

函数说明
array将输入数据(列表,元祖,数组或者其他序列类型)转化为ndarray,要么判断出dtype,要么显示指定dtype。默认直接复制输入数据
asarray将输入转换为ndarray,如果输入本身就是一个ndarray就不进行复制d
arange类似于内置的range,但放回的是一个ndarray而不是列表
ones,ones_like根据制定的形状和dtype创建一个全1数组。ones_like以另一个数组为参数,并根据其形状和dtype创建一个全1数组
zeros,zeros_like类似于ones和ones_like,只不过产生的是全0数组而已
empty,empty_like创建新数组,只分配内存空间但不填充任何值
eye,identity创建一个正方的N*N单位矩阵(对角线为1,其余为0)

通用函数

函数说明
abs,fabs计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs
sqrt计算元素的平方根。相当于arr**0.5
square计算元素的平方。相当于arr**2
exp计算各元素的指数e^x
log,log10,log2,log1p分别为自然对数(底数为e)、底数为10的log、底数为2的log、log(1+x)
sign计算各元素的正负号:1,0,-1
ceil计算各元素的ceiling值,即大于等于该值得最小整数
floor计算各元素的floor值,即小于等于该值的最大整数
rint计算各元素值四舍五入到最接近的整数,保留dtype
modf将数组的小数和整数部分以两个独立数组的形式返回
isnan返回一个表示“那些值是NAN(这不是一个数字)”的布尔型数组
isfinite,isinf分别放回一个表示“那些元素是有穷的“或”那些元素是无穷的“的布尔型数组
cos、cosh、sin、sinh、tan、tanh普通型和双曲型三角函数
arccos、arccosh、arcsin、arcsinh、arctan、arctanh反三角函数
logical_not计算各元素not x的真值。相当于-arr
add将数组中对应的元素相加
subtract从第一个数组中减去第二个数组中的元素
multiply数组元素相乘
divide,floor_divide除法或向下圆整除法
power对第一个数组中的元素,根据第二个数组中的相应元素,计算A^B
maximum,fmax元素级的最大值计算。fmax将忽略NaN
minimum,fmin元素级的最小值计算。fmin将忽略NaN
mod元素级的求模计算
copysign将第二个数组中的值得符号复制给第一个数组中的值
less、less_equal,equal,not_equal算符>,>=,<,<=,==,!=
logical_and、logical_or,logical_xor执行元素级的真值逻辑运算。相当于中缀运算符&、

基本数组统计方法

方法说明
sum对数组中全部或某轴向的元素求和。零长度的数组的sum为0
mean算术平均数。零长度的数组的mean为Nan
std、var分别为标准差和方差,自由度可调(默认为n)
min、max最大值和最小值
argmin、argmax分别为最大和最小元素的索引
cumsum所有元素的累计和
cumprod所有元素的累计积

数组的集合运算

方法说明
unique(x)计算x中的唯一元素,并返回有序结果
intersect1d(x,y)计算x和y中的公共元素,并返回有序结果
union1d(x,y)计算x和y的并集,并返回有序结果
in1d(x,y)得到一个表示“x的元素是否包含于y”的布尔型数组
setdiff1d(x,y)集合的差,即元素在x中且不在y中
setxor1d(x,y)集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素

常用的numpy.linalg函数

函数说明
diag以一维数组的形式返回方针的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot矩阵乘法
trace计算对角线元素的和
det计算矩阵行列式
eig
inv计算方阵的逆
pinv计算矩阵的eMoore——Penrose伪逆
qr计算QR分解( square and triangle)
svd计算奇异值分解(SVD)
solve解线性方程组Ax=b,其中A为一个方阵
lstsq计算Ax=b的最小二乘解

部分numpy.random函数

函数说明
seed确定随机数生成器的种子
permutation返回一个序列的随机排列或返回一个随机排列的方法
shuffle对一个序列地随机排列
rand产生均匀分布的样本值
randint从给定的上下限范围内随机选取整数
randn产生正太分布(平均值为0,标准差为1)的样本值
binomial产生二项分布的样本值 (二项分布就是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,并且相互独立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从0-1分布)
normal产生正态(高斯)分布的样本值
beta产生Beta分布的样本值(贝塔分布(Beta Distribution) 是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,在机器学习和数理统计学中有重要应用)
chisquare产生卡方分布的样本值(若n个相互独立的随机变量ξ₁,ξ₂,…,ξn ,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为卡方分布(chi-square distribution))
gamma产生Gamma分布的样本值(伽玛分布(Gamma Distribution)是统计学的一种连续概率函数,是概率统计中一种非常重要的分布。“指数分布”和“χ2分布”都是伽马分布的特例。 [1] )
uniform产生在[0,1)中均匀分布的样本值

https://blog.youkuaiyun.com/bitcarmanlee/article/details/82156281
说的比较全面

pandas

Series

类型说明
二维ndarray数据矩阵,还可以传入行标和列标
由数组、列表或元组组成的字典每个序列会变成DataFrame的一列。所有序列的长度必须相同
numpy的结构化/记录数组类似于“由数组组成的字典”
由Series组成的字典每个Series会成为一列。如果没有显式指定索引,则各Series的索引会被合并成结果的并索引
有字典组成的字典各内层字典会成为一列。键会被合并结果的行索引,跟‘由Series组成的字典’的情况一样
字典或Series的列表各项将会成为Dataframe的一行。字典键或Series索引的并集将会成为DataFrame的列标
由列表或元组组成的列表类似于“二维ndarray”
另一个DataFrame该DataFrame的索引将会被沿用,除非显示指定了其他索引
Numpy的MaskedArray类似于“二维ndarray”的情况,只是掩码值在结果DataFrame会变成NA/缺失值

pandas中主要的Index对象

说明
Index最泛化的Index对象,将轴标签表示为一个由python对象组成的numpy数组
Int64Index针对整数的特殊Index
MultiIndex“层次化”索引对象,表示单个轴上的多层索引。可以看做由元组组成的数组
DatetimeIndex存储纳秒级时间戳(用NumPy的datetime64类型表示)
PeriodIndex针对Period数据(时间间隔)的特殊Index
方法说明
append连接另一个Index对象,产生一个新的Index
diff计算差集,并得到一个Index
intersection计算交集
union计算并集
方法说明
append连接另一个Index对象,产生一个新的Index
diff计算差集,并得到一个Index
intersection计算交集
union计算并集
isin计算一个指示各值是否都包含在参数集合中的布尔型数组
delete删除索引i处的元素,并得到新的Index
drop删除传入的值,并得到新的Index
Insert将元素插入到索引i处,并得到新的Index
is_monotonic将各元素均大于等于前一个元素时,返回True
is_unique当Index没有重复值时,返回True
unique计算Index中唯一值得数组
reindex的(插值)method选项
参数说明
ffill或pad前向填充(或搬运)值
bfill或backfill后向填充(或搬运)值
reindex函数的各参数及说明
参数说明
index用作索引的新序列。既可以是Index实例,又可以是其他序列型的python数据结构。Index会被完全使用,就像没有任何复制一样
method插值(填充)方式,具体参数请参见上面
fill_value在重新索引的过程中,需要引入缺失值时使用的替代值
limit前后或后向填充时的最大填充量
level在multiIndex的指定级别上匹配简单索引,否则选取其子集
copy默认是True
灵活的算术方法
方法说明
add用于加法(+)的方法
sub用于减法(-)的方法
div用于除法(/)的方法
mul用于乘法(*)的方法
排名时用于破坏平级关系的method选项
method说明
average默认:在相等分组中,为各个值分配平均排名
min使用整个分组的最小排名
max使用整个分组的最大排名
first安置在袁术数据中出现的顺序分配排名
约简方法的选项
选项说明
axis约简的轴。DataFrame的行用0,列用1
skipna排除缺失值,默认值为True
level如果轴是层次化索引的,则根据level分组约简
描述和汇总统计
方法说明
count非NA值得数量
describe针对Series或各DataFrame列计算汇总统计
min、max计算最小值和最大值
argmin、argmax计算能够获取到最小值和最大值的索引位置
idxmin、idxmax计算能够获取到最小值和最大值的索引值
quantile计算样本的分位数(0到1)
sum值得总和
mean值的平均值
median值的算术中位数
mad根据平均值计算平均绝对离差
var样本值的方差
std样本值的标准差
skew样本值的偏度(三阶矩)
kurt样本值的峰度(四阶矩)
cumsum样本值得累积和
cummin、cummax样本值得累积最大值和累积最小值
cumprod样本值的累计积
diff计算一阶差分
pct_change计算百分数变化
相关系数和协方差
英语意义
corr相关系数
cov协方差
唯一值、值计数、成员资格方法
方法说明
isin计算一个表示“Series各值是否包含于传入的值得序列中”的布尔型数组
unique计算Series中的唯一值数组,按发现的顺序返回
value_counts返回一个Series,其索引为唯一值,其值为频率,按计数值降序排列
处理缺失数据
方法说明
dropna根据各标签的值中是否存在确实数据对轴标签的进行过滤,可通过阀值调节对缺失值的容忍度
fillna用指定值或插值方法(如fill或bfill)填充缺失数据
isnull返回一个含有布尔值的对象,这些布尔值表示那些值是缺失值/NA,该对象的类型与源类型一样
notnullisnull的否定式
fillna函数的参数
参数说明
value用于填充缺失值得标量值或字典对象
method插入方式。如果函数调用时未指定其他参数的话,默认为‘ffill’
axis待填充的轴,默认axis=0
inplace修改调用对象而不产生副本
limit(对于前向和后向填充)可以连续填充的最大数量
层次化索引

层次化索引是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。抽象点说,它能
使你能以低维度形式处理高维度数据。

数据加载、存储与文件格式

函数说明
read_csv从文件、URL、文件型对象中加载带分隔符的数据
read_table从文件、URL、文件型对象中加载带分隔符的数据
read_clipboard读取剪贴板中的数据,可以看做read_table的剪贴板。在网页转换为表格时很有用
read_csv/read_table函数的参数
参数说明
path表示文件系统位置、URL、文件型对象的字符串
sep或delimiter用于对行中各字段进行拆分的字符序列或正则表达式
header用作列名的行号。
index_col用作行索引的列编号或列名。可以是单个名称/数字或由多个名称、数字组合的列表
names用于结果的列名列表,结合header=None
skiprows需要忽略的行数,或需要跳过的行号列表
na_values一组用于替换NA的值
comment用于将注释新消息从行尾拆分出去的字符
parse_dates尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。此外,还可以指定需要解析的一组列好或列名。如果列表的元素为列表或元组,就会将多个列组合到一起再进行日期解析工作(例如,日期/时间分别位于两个列中)
keep_date_col如果连接多列解析日期,则保持参与连接的列。默认是False
converters由列号/列名跟函数之间的映射关系组成的字典。例如,{‘foo’:f}会对foo列的所有值应用函数f
dayfirst当解析有歧义的日期时,将其看做国际格式。
date_parser用于解析日期的函数
nrows需要读取的行数
iterator放回一个TextParser以便逐块读取文件
chunksize文件快的大小(用于迭代)
skip_footer需要忽略的行数(从文件末尾处算)
verbose打印各种解析器输出信息
encoding用于unicode的文本编码格式,“utf-8”表示用utf-8编码的文本
squeeze如果数据经解析后仅含一列,则放回Series
thousands千分位分隔符

数据规整化:清理、转换、合并、重塑

pandas对象中的数据可以通过一些内置的方法进行合并

  • pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来。sql或其他关系型数据库的用户对此应该会比较熟悉,因为它实现的就是数据库的连接操作
  • pandas.concat可以沿着一条轴将多个对象堆叠到一起
  • 实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充灵一个对象中的缺失值
merge函数的参数
参数说明
left参与合并的左侧Dataframe
right参与合并的右侧Dataframe
howinner、outer、left、right其中一个。默认为inner
on用于连接的列名。必须存在于左右两个Dataframe对象中。如果未指定,其他连接键也未指定,则以left和right列名的交集座位连接键
left_on左侧DataFrame重用作连接键的列
right_on右侧DataFrame中用作连接键的列
left_index将左侧的行索引用作其连接键
right_index同上
sort根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
suffixes字符串值元组,用于追加到重叠列名的末尾,默认为(’_x’,’_y’)。例如,如果左右两个DataFrame对象都有“data”,则结果中就会出现“data_x”和“data_y"
copy设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是复制

轴向连接

另一种数据合并运算也被称作连接、绑定或堆叠

  • 如果各对象其他轴上的索引不同,那些轴应该是做并集还是交集
  • 结果对象中的分组需要各不相同吗?
  • 用于连接的轴重要吗?
concat函数的参数
参数说明
objs参与连接的pandas对象的列表或字典。唯一必须的参数
axis指明连接的轴向,默认为0
join“inner”,“outer"其中之一。默认为"outer”.知名其他轴向上的索引是按交集(inner)还是并集(outer)进行合并
join_axes指明用于其他n-1条轴的索引,不执行并集/交集运算
keys与连接对象有关的值,用于形成连接轴向上的层次化索引。可以是任意值得列表或数组、元组数组、数组列表(如果将levels设置成多级数组的话)
levels指定用作层次化索引各级别上的索引,如果设置了keys的话
names用于创建分层级别的名称,如果设置了keys和levels的话
verify_integrity检查结果对象新轴上的重复情况,如果发现则引发异常。默认允许重复
ignore_index不保留连接轴上的索引,产生一组新索引
重塑和轴向旋转
重塑层次化索引
  • stack:将数据的列"旋转"为列
  • unstack:将数据的行"旋转"为列

数据转换

  • duplicates
  • drop_duplicates
利用函数或映射进行数据转换

字符串操作

python内置的字符串方法
方法说明
count返回子串在字符串中的出现次数(非重叠)
endswith,startswith如果字符串以某个后缀结果,则返回True
join将字符串用作连接其他字符串序列的分隔符
index如果在字符串中找到子串,则放回子串第一个字符所在的位置。如果没有找到,则引发valueError
find如果在字符串中找到子串,则返回第一个发现的子串的第一个字符所在的位置。如果没有找到,则返回-1
rfind如果在字符串中找到子串,则返回最后一个发现的子串的第一个字符所在的位置。如果没有找到,则返回-1
replace用另一个字符替换指定子串
strip、rstrip、lstrip去除空白符。相当于对各个元素执行x.strip()
split通过指定的分隔符将字符串拆分为一组子串
lower、upper分布将字母字符转换为小写或大写
ljust、rjust用空格填充字符串的空白侧以返回符合最低宽度的字符串

matplotlib的用法

Series.plot方法的参数

参数说明
label用于图例的标签
ax要在其上进行绘制的matplotlib subplot对象,如果没有设置,则使用当前matplotlib subplot
stype将要传给matplotlib的风格字符串’ko–’
alpha图表的填充不透明度
kind可以是line,bar,barh,kde
use_index将对象的索引用作刻度标签
rot旋转刻度标签(0到360)
xticks用作x轴刻度的值
yticks用作y轴刻度的值
xlimx轴的界限(例如[0,10])
ylimy轴的界限
grid显示轴网格线
subplots将各个DataFrame列绘制到单独的subplot中
sharex如果subplots=True,则共用同一个X轴,包括刻度和界限
sharey如果subplots=True,则共用同一个Y轴
figsize表示图像大小的元组
title表示图像标题的字符串
legend添加一个subplot突破
sort_columns以字母表顺序绘制各列,默认使用当前列顺序

kind=’bar‘(垂直柱状图)或kind=‘barh’(水平柱状图)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值