Numpy、Pandas使用大全与各参数详解

news/2024/11/13 3:58:52/

目录

一、numpy

1、属性、方法与操作

(1)属性

(2)方法

(3)操作

2、文件读取与保存

(1)文件读取

(2)文件保存

3、矩阵生成

二、Pandas

1、属性与方法

(1)属性

(2)方法

2、数据选取

(1)取行

(2)取列

3、数据处理

(1)数据缺失值

(2)空值处理

(3)数据重复处理

(4)数据合并

(5)数据排序

(6)数据分组

4、数据导入与读取

(1)数据库导入

(2)文件读取

5、文件导出

6、数据转换

7、可视化matplotlib函数


一、numpy

1、属性、方法与操作

数据类型:ndarray

(1)属性

.ndim:矩阵维度

.shape:矩阵的形状

.size:矩阵中元素的个数

.dtype:元素数据类型

.T:矩阵的转置

(2)方法

reshape(shape):返回新的数组

resize(shape):返回修改原有的数组

sum()、max()、min()、mean():可设置axis按行列计算

tolist():array转变为list

fill(value):填充

(3)操作

array[行索引]:索引

array[起始行:结束行:步长,起始列:结束列:步长]:切片

2、文件读取与保存

(1)文件读取

np.loadtxt(filename,delimiter=,encoding=):文件读取以及参数

dtype:默认以浮点数类型读取

comments:默认忽略掉文件中以#号开头的注释行

delimiter:无默认值,应该指定分隔符如‘,’

usecols:默认取所有列,可以设置读取指定的列如(1,3)指文件的第2和第四列

skiprows:默认0,不跳过头行,可是这跳过开头的n行

maxrows:默认取文件的所有行,可设置读取文件的最大行数,不包括skiprows

(2)文件保存

np.savetxt(filename,array_data,):文件保存以及对应参数

fmt:默认以高精度浮点数保存数据,可以设置如整数‘%d’

delimiter:默认以空格分隔符字段,课设置CSV如‘,’

encoding:默认字符编码模式

3、矩阵生成

np.array(object):生成array数据

np.empty(shape),np.empty_like(a):生成空矩阵

np.zeros(shape), np.zeros_like(a):生成全为0的矩阵

np.ones(shape), np.ones_like(a):生成全为1的矩阵

np.full(shape,value), np.full_like(a,value):生成指定value和类型的矩阵

np.eye(ndim):生成指定维度且对角线为1,其余地方为0的矩阵

np.fromstring():创建一个新的一维数组,该数组从字符串中的文本数据初始化

np.arange(start,end,step):通过arange函数生成一个array对象

np.linspace(first,last,size):可以生成等间距数组

np.concatenate([a,b],axis=0):用来对数列或矩阵进行合并的

np.random.rand(), np.random.randn(), np.random.randint(),np.random.uniform(), np.random.normal(), ...:通过Python的随机函数进行array数据类型创建

np.sum(), np.mean(), np.median(), np.max(), np.min(), np.std(),...聚合函数

二、Pandas

1、属性与方法

(1)属性

.index:获取行索引对象

.values:获取element数组

.shape/.ndim/.size/.dtype:数组/维度/大小/类型

.columns:获取列索引对象

.T:获取转置DataFrame

(2)方法

.get(列名,缺省值):获取列和df[列名]类似,但不会因列名不存在报错

.copy():复制一个新对象

.head(n)/.tail(n):头/尾n行

.max()/.min()/.mean()/.median()... .describe():数据分布与统计

.insert(插入位置,插入列,插入数据):插入一列

.drop(行号)、.drop(列名,axis=1):删除行\列,默认删除行列后生成新的dataframe,如需要在原dataframe上删除可设置参数inplace=True。

del df[列名]:删除列,直接作用在df上

.drop_duplicates(subset=[列名],keep=“first|last”,inplace=False):删除重复项

.unique():唯一值

.set_index(列名):使用某列作为index

.reset_index(drop=True|False,inplace=True|False)

.apply(np.sum):对每列数据执行指定的函数运行

df.apply(function,axis=1):生成新列

.apply_map(function):对每个单元格元素执行指定的运算函数

2、数据选取

(1)取行

按行索引(index)标签取:

df.loc[行标签]:取一行数据导一个Series对象

df.loc[[行标签]]:取一行数据导dataframe对象

df.loc[[行标签1,行标签2,行标签3,...]]:取多行数据到一个dataframe

df.loc[首行标签:末行标签:步长]:行切片

按照行索引(index)位置取

df.iloc[行号]:取一行数据到一个Series对象

df.iloc[[行号]]:取一行数据到一个dataframe对象

df.iloc[[行号1,行号2....]]:取多行数据到一个DataFrame对象

df.iloc[起始行号:结束行号:步长]:行切片

(2)取列

①按列名取:

df[列标签]:取一列数据到一个Series对象

df[[列标签]]:取一列数据到一个dataframe对象

df.loc[[列标签1,列标签2,列标签3,...]]:取多列数据到一个dataframe

df.loc[首列标签:末列标签:步长]:列切片

②按照列索引(index)位置取:

df.iloc[:,列号]:取一列数据到一个Series对象

df.iloc[:,[列号]]:取一列数据到一个dataframe对象

df.iloc[:,[列号1,列号2....]]:取多列数据到一个DataFrame对象

df.iloc[:,起始列号:结束列号:步长]:列切片

③取行列数据:

df.loc[[行标签1,行标签2...],[列标签1,列标签2,...]]:df.loc[按行标签取,按列标签取]

df.loc[首行标签:末行标签:步长, 首列标签:末列标签:步长]:切片

df.iloc[[行号1,行号2,...], [列号1,列号2,...]]:df.iloc[按行位置取,按列位置取]

df.iloc[起始行号:结束行号:步长, 起始列号:结束列号:步长]:切片

3、数据处理

(1)数据缺失值

np.nan\pd.nat:空值类型

.isna():得到一个元素是否为空的bool矩阵(空值检测)

.notna():得到一个元素是否不为空的bool矩阵(空值检测)

(2)空值处理

①空值填充:

.fillna(填充值):使用填充值去填充空值部分

.fillna(method='ffill'):用上一个值填充空值

.fillna(method='bfill'):用下一个值填充空值

.fillna(method='ffill',axis=1):用左一个值填充空值

.fillna(method='bfill',axis=1):用右一个值填充空值

df["成绩"].fillna(df["成绩"].mean()):用给定值填充空值

②空值清除

.dropna():默认除去包含任意空值的行

.dropna(axis=1):去除包含任意空值的行

.dropna(how='all'):只有一行所有值都为空才去除

.dropna(subset=包含空值的行或列):只判断给定行或列中是否有空值

(3)数据重复处理

.duplicated():生成一个是否重复行的bool数组(数据重复检验)

.drop_duplicates():去除重复项,其中.drop_duplicates(subset=列名)按照列名检测重复项

(4)数据合并

pd.concat([df1,df2],axis=0):行拼接,列集合

pd.concat([df1,df2],axis=1):列拼接,行集合

df1.merge(df2,left_on=左表列名,right_on=右表列名, how='innerleft|right|outer|cross'):默认使用相同的列进行关联,也可以指定两个df的不同名关联列

df1.join(df2,on=列名或列号,how='left|right|inner|outer'):默认使用index进行关联,也可以指定两个df的公共关联列

(5)数据排序

.sort_index():对行索引排序(按index排序)

.sort_index(axis=1):对列索引(列名)排序(按index排序)

.sort_values(by):按by列值排序

.sort_values(by, axis=1):按by行值排序

通用参数:

- ascending:True升序,False降序

- inplace: 是否修改原数据

- na_position: "first"|"last" 缺失值排在最前或最后

(6)数据分组

①使用.groupby()方法分组

df_student.groupby("班级"):单字段分组

df_student.groupby(["班级","性别"]):多字段分组

②使用函数分组

01、行

def set_index_group(index):if index % 2 == 0:return "偶数行"else:return "奇数行"df_iris.groupby(set_index_group)

02、列

def set_column_group(column_name):if "length" in column_name:return "length"elif "width" in column_name:return "width"else:return "classfication"df_iris.groupby(set_column_group,axis=1)

03、GroupBy对象

.groups:得到所有的group

.get_group():得到指定的group

.apply():对group数据执行函数

.agg()|.aggregate():对group进行聚合统计

.max()/.min()/.mean()/.median()/.sum()/......:对group数据统计

4、数据导入与读取

(1)数据库导入

参数1:conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='密码',db='数据库名')

参数:2:conn=sqlite3.connect('mydb.db')

pd.read_sql_query(sql,conn):连接关系数据库执行SQL语句并获取结果集

(2)文件读取

pd.read_csv(file):

参数:

delimiter|sep=',':分隔符

comment='#':注释符

encoding='utf-8':文本编码

header=0:列头行

names=[]:指定列名

index_col=[]:指定列作为行索引

usecols=[]:读取指定列

skiprows=0:跳过数据行数

skipfooter=0:截止数据行数

nrows=0:读取数据行数

parse_dates=False:是否转换日期字符串为日期格式

infer_datetime_format=False:是否自动设置日期格式

pd.read_excel(file):sheet_name=0:指定工作表

pd.read_xml(file_or_buffer):xpath='./*':指定读取XPATH路径

pd.read_html(file_or_buffer):读取HTML页面

pd.read_json():读取JSON字符串或者JSON文件

pd.read_pickle():读取pickle序列化文件

5、文件导出

df.to_csv():将df数据写入分隔符文本文件

df.to_excel():将df数据写入Excel表格文件

df.to_xml():将df数据写入XML文件

df.to_html():将df数据写入HTML文件

df.to_json():将df数据写入JSON文件

df.to_pickle():将df数据写入pickle序列化文件

df.to_dict():转换成字典

6、数据转换

df.to_numpy():转换成Numpy数组

df.to_string():转换成字符串

7、可视化matplotlib函数

df.plot():绘制折线图

df.plot.bar():绘制柱状图

df.plot.barh():绘制横柱图

df.plot.scatter():绘制散点图

df.plot.box():绘制箱型图

df.plot.hist():绘制直方图

df.plot.pie():绘制饼图


http://www.ppmy.cn/news/258354.html

相关文章

【Java se】为什么大部分小数在计算机中是不精确的

目录 一、什么是小数 二、浮点数在计算机中的转换规则 (1)整数部分转换步骤 (2) 小数部分转换步骤 三、使用代码说明 四、手动转换小数 一、什么是小数 在计算机中,也称小数为浮点数,因为在使用科学计…

常见的USB VID

常见的USB VID:(遇到再更新) 03f0 Hewlett-Packard040a Kodak Co.04b8 Seiko Epson Corp.0eef D-WAV Scientific Co., Ltd1234 附所有VID:(来自http://www.linux-usb.org/usb.ids) ## List of USB ID…

【京东电商网站主界面仿写——HTML第九部分 HTML部分展示结束】

由于这个项目整体的代码较长,所以分成几个部分给大家展示。 比较完整的效果在这里~~【京东网站主界面仿写——使用Html5+CSS3+JavaScript等实现(附源代码和效果),挺炫的喔~~~】 这里先展示第一部分,关于HTML主页界面代码。 这里是主界面显示的第3701行到第4196行代码(至…

python evaluate函数_python 内联函数

python的一些小函数很能提高效率,平时在工作中经常忽视这些内容,而使用很原始粗暴的方法写代码;写了一段时间以后,发现自己的提高很少,要写个小脚本也要纠结半天,跟那些大拿们相差太大;所以要检讨自己,看看自己可以从那方面提高自己的技术能力; 今天首先学习下python的…

通过单反wifi同步照片到Android手机——使用Airnef Python脚本

前言 本人使用的是尼康D750,自带wifi功能,奈何配套的Android App太难用了,至于怎么难用,我这里就不细说了,用过的都懂。总不能白瞎了wifi功能吧。找了一阵子发现了两个第三方通过逆向工程制作的工具。一个是qDslrDash…

A-M进程列表

来源:不详 可惜只找到A~M的,谁有跟贴贴全了它。感觉很有用。计算机操作系统进程程序清单(A~M)0-9  3CDMINIC.exe → 3Com DMI Agent (DMI Desktop Management Interface). 3Com网络设备检测程序,完全安装3Com驱动后出现  …

Linux下面安装jdk和tomcat

1、jdk的安装 1、上传jdk到 opt目录下面 2、解压jdk tar -xvf jdk-8u281-linux-x64.tar.gz3、一般把jdk放到/usr/local (软件的安装都是放到usr下面) mv jdk1.8.0_281 /usr/local/4、配置环境变量 找到 /etc/profile 进行编辑修改 export JAVA_HOM…

Nikon部分产品限制产量并涨价

先来看看要停产的部分: N家摄友注意了,尼康下列产品将停产或已停产 Tuesday, January 27, 2009 Discontinued Toys Almost everyone emailed us with a shock to know the fact Nikon discontinued many lenses, cameras, flashes, and accessories in p…