Python——Pandas的基本使用方法(1)

1.文件读写

图1-1 iris部分数据
图1-2 tips部分数据
图1-3 tips1部分数据

1.1 读取csv文件 —— read.csv()

  • read.csv()部分参数的解释如下:
参数名称作用备注
filepath_or_buffer要读取的文件路径或对象
sep字段分隔符,默认为逗号
delimiter字段分隔符与 sep 功能相似
header用作列名的行号,默认为0(第一行),如果没有列名则设为None
names列名列表,用于结果DataFramenames适用于没有表头的情况
index_col用作索引的列编号或列名
usecols返回的列,可以是列名的列表或由列索引组成的列表
dtype字典或列表,指定某些列的数据类型
skiprows需要忽略的行数从文件开头算起
nrows需要读取的行数从文件开头算起
encoding文件编码如’utf-8’等
# 1.导入panda库,然后命名为pd
import pandas as pd   # 2.读取csv文件,注意路径的问题
iris = pd.read_csv(r"C:/XXX/xxx/Documents/mycrawlers/数据分析与可视化/实验二——Pandas的基本使用方法/iris.csv") # 3.读取iris文件的前5行数据
print(iris.head(5))   # 得到的结果为Unnamed: 0  Sepal.Length  Sepal.Width  Petal.Length  Petal.Width Species
0           1           5.1          3.5           1.4          0.2  setosa
1           2           4.9          3.0           1.4          0.2  setosa
2           3           4.7          3.2           1.3          0.2  setosa
3           4           4.6          3.1           1.5          0.2  setosa
4           5           5.0          3.6           1.4          0.2  setosa# 4.读取iris文件的行
print(iris.columns)   # 得到的结果为
Index(['Unnamed: 0', 'Sepal.Length', 'Sepal.Width', 'Petal.Length','Petal.Width', 'Species'],dtype='object')# 5.读取iris文件的索引值
print (iris.index)   # 得到的结果为RangeIndex(start=0, stop=150, step=1)# 6.查看iris文件的值的类型
print (type(iris.values))   # 得到的结果为
<class 'numpy.ndarray'>

1.1.1 head()方法

  • 在head()方法中里面没有给定数字,默认的是前5行,可以通过输入具体的数字来调整读取文件的多少
# 1.利用head()方法读取iris文件的前100行数据(包括100行)
iris.head(100)# 2.得到的结果为
Unnamed: 0	Sepal.Length	Sepal.Width	Petal.Length	Petal.Width	Species
0	1	5.1	3.5	1.4	0.2	setosa
1	2	4.9	3.0	1.4	0.2	setosa
2	3	4.7	3.2	1.3	0.2	setosa
3	4	4.6	3.1	1.5	0.2	setosa
4	5	5.0	3.6	1.4	0.2	setosa
...	...	...	...	...	...	...
95	96	5.7	3.0	4.2	1.2	versicolor
96	97	5.7	2.9	4.2	1.3	versicolor
97	98	6.2	2.9	4.3	1.3	versicolor
98	99	5.1	2.5	3.0	1.1	versicolor
99	100	5.7	2.8	4.1	1.3	versicolor
100 rows × 6 columns
  • 读取iris文件的Species列的前5行数据以及"Petal.Length","Species"两列全部数据
# 1.读取iris文件的Species列的前5行数据
iris.Species.head()# 2.得到的结果为
0    setosa
1    setosa
2    setosa
3    setosa
4    setosa
Name: Species, dtype: object# 3.读取iris文件的中Petal.Length、Species列的全部数据
iris[["Petal.Length","Species"]]# 4.得到的结果为
Petal.Length	Species
0	1.4	setosa
1	1.4	setosa
2	1.3	setosa
3	1.5	setosa
4	1.4	setosa
...	...	...
145	5.2	virginica
146	5.0	virginica
147	5.2	virginica
148	5.4	virginica
149	5.1	virginica
150 rows × 2 columns

1.2 读取xlsx文件—— read.excel()

  • pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)

(1)io:要读取的Excel文件的路径(字符串)或者可迭代对象,例如文件对象、Excel表格URL、Excel文件中的表名等。

(2)sheet_name:要读取的Sheet的名称或索引(默认为0)

(3)header:指定列名所在的行数,默认为0,表示第一行

(4)names:自定义列名(列表形式),如果不指定,则默认使用Excel文件中的列名

(5)index_col:指定作为行索引的列,默认为None,表示不使用任何列作为索引

(6)usecols:指定要读取的列(列表形式),可以是列名或列索引

1.3 读取csv或txt文件——read_tabl()

  • read_table(filepath_or_buffer , sep='\t' , header='infer' ,names=None , index _col=None , usecols=None , dtype=None ,  converters=None ,  skiprows=None , skipfooter=None , nrows=None ,na_values=None , skip_blank_lines=True , parse_dates=False ,thousands= None , comment=None , encoding=None)

(1)filepath_or_buffer:文件路径、指定存储数据的URL或者文件型对象

(2)sep:指定原数据集中分割每行字段的分隔符,默认为tab制表符

(3)header:是否将原数据集中的第一行作为表头,默认是0,将第一行作为变量名称;如果原始数据中没有表头,该参数需要设置成None
(4)names:如果原数据集中没有列名,这个可以用来给数据添加列名。和header=None一起使用

(5)index _col:指定数据集中的某些列(字段)作为数据的行索引(标签)

(6)usecols:指定要读取哪些列(字段)的数据

(7)dtype:为数据集中的每列设置不同的数据类型

(8)converters:通过字典格式,为数据集中的某些列(字段)设置转换函数

# 1.使用read_table()方法读取文件
tips = pd.read_table(r"C:/Users/86135/Documents/mycrawlers/数据分析与可视化/实验二——Pandas的基本使用方法/tips1.csv",sep=",")# 2.查看文件前5行数据
tips.head()# 3.得到的结果为total_bill,tip,sex,smoker,day,time,size
0	16.99,1.01,Female,No,Sun,Dinner,2
1	10.34,1.66,Male,No,Sun,Dinner,3
2	21.01,3.5,Male,No,Sun,Dinner,3
3	23.68,3.31,Male,No,Sun,Dinner,2
4	24.59,3.61,Female,No,Sun,Dinner,4
# 1.导入panda库,然后命名为pd
import pandas as pd  # 2.导入文件注意这里的文件是xlsx类型的文件,不是csv文件
data = pd.read_excel(r"C:/XXX/xxx/Documents/mycrawlers/数据分析与可视化/实验二——Pandas的基本使用方法/tips.xlsx")  # 3.读取tips文件的前5行
data.head() # 4.得到的结果为
total_bill	tip	sex	smoker	day	time	size
0	16.99	1.01	Female	No	Sun	Dinner	2
1	10.34	1.66	Male	No	Sun	Dinner	3
2	21.01	3.50	Male	No	Sun	Dinner	3
3	23.68	3.31	Male	No	Sun	Dinner	2
4	24.59	3.61	Female	No	Sun	Dinner	4

1.4 pandas.get_dummies()——将分类变量转换为虚拟/指标变量

  • get_dummies (数据, prefix = None , prefix_sep = '_' , dummy_na = False , columns = None , sparse = False , drop_first = False , dtype = None ) 

(1) data:数组、Series 或 DataFrame 获取输入的数据

(2)prefix(前缀):str、str 列表或 str 字典,默认无 附加 DataFrame 列名的字符串。在 DataFrame 上调用 get_dummies 时传递一个长度等于列数的列表。 或者,前缀 可以是将列名映射到前缀的字典

(3)prefix_sep:str,默认 '_' 如果附加前缀,则使用分隔符/定界符。或者通过prefix传递一个列表或字典

(4)dummy_na:布尔值,默认为 False 如果忽略 False NaN,则添加一列以指示 NaN

(5)columns :列表,默认无 要编码的 DataFrame 中的列名。 如果columns是 None 那么所有具有 object或category dtype 的列都将被转换

(6)sparse :布尔值,默认为 False 虚拟编码列应该由SparseArray(True) 还是常规 NumPy 数组 (False) 支持

(7)drop_first:布尔值,默认为 False 是否通过删除第一级从 k 个分类级别中取出 k-1 个虚拟变量

(8)dtype :默认 np.uint8 新列的数据类型。只允许使用一个 dtype

# 1.读取tips文件的前5行
data.head() # 2.使用get_dummies的方法,读取tips文件的名称为'dy'的列,根据原数据进行转换,添加原数据中缺省的变量
day_df = pd.get_dummies(data["day"])  # 3.读取使用get_dummies方法后,读取tips文件的前10行数据
day_df.head(10)#4. 得到的数据为
Fri	Sat	Sun	Thur
0	0	0	1	0
1	0	0	1	0
2	0	0	1	0
3	0	0	1	0
4	0	0	1	0
5	0	0	1	0
6	0	0	1	0
7	0	0	1	0
8	0	0	1	0
9	0	0	1	0

1.5 matplotlib.pyplot绘图函数

# 1.导入库
import matplotlib.pyplot as plt# 2.# %matplotlib具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像
%matplotlib inline  # 3.导入数据
species = iris["Species"]# 4.指定绘制的图形为柱状图(bar)
species.value_counts().plot(kind="bar")

        得到的结果如下图1-4所示:

图 1-4 绘图结果

 1.6 info()—— 查看数据的摘要信息

  • info(verbose=True, buf=None, max_cols=None)

(1)verbose:布尔值,默认值为 True,如果为 False,则不打印列计数摘要

(2)buf :可写缓冲区,默认:sys.stdout

(3)max_cols:int,默认值:无,确定是打印完整摘要还是简短摘要

# 1.查看iris文件数据帧的摘要信息
iris.info()# 2.得到的结果为
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 6 columns):
Unnamed: 0      150 non-null int64
Sepal.Length    150 non-null float64
Sepal.Width     150 non-null float64
Petal.Length    150 non-null float64
Petal.Width     150 non-null float64
Species         150 non-null object
dtypes: float64(4), int64(1), object(1)
memory usage: 7.2+ KB

1.7 describe方法——观察数据的范围、大小、波动趋势等等,便于判断后续对数据采取哪类模型更合适

  • dataframe.describe(percentiles=None, include=None, exclude=None)

(1)percentiles:此参数可以设定数值型特征的统计量,默认是[.25, .5, .75],也就是返回25%,50%,75%数据量时的数字,但是这个可以修改的,可以修改成[.2,.75,.8],它是默认有[.5]的

(2)include:此参数默认是只计算数值型特征的统计量,当输入include=['O'],会计算离散型变量的统计特征 像上面的代码,传参数是"all"的时候会把数值型和离散型特征的统计都进行显示

(3)exclude:此参数可以指定不选哪些,默认不丢弃任何列,相当于无影响

# 1.使用describe方法观察iris数据
iris.describe(include = "all")# 2. 得到的结果为
Unnamed: 0	Sepal.Length	Sepal.Width	Petal.Length	Petal.Width	Species
count	150.000000	150.000000	150.000000	150.000000	150.000000	150
unique	NaN	NaN	NaN	NaN	NaN	3
top	NaN	NaN	NaN	NaN	NaN	versicolor
freq	NaN	NaN	NaN	NaN	NaN	50
mean	75.500000	5.843333	3.057333	3.758000	1.199333	NaN
std	43.445368	0.828066	0.435866	1.765298	0.762238	NaN
min	1.000000	4.300000	2.000000	1.000000	0.100000	NaN
25%	38.250000	5.100000	2.800000	1.600000	0.300000	NaN
50%	75.500000	5.800000	3.000000	4.350000	1.300000	NaN
75%	112.750000	6.400000	3.300000	5.100000	1.800000	NaN
max	150.000000	7.900000	4.400000	6.900000	2.500000	NaN
  • percentiles:此参数可以设定数值型特征的统计量,默认是[.25, .5, .75],也就是返回25%,50%,75%数据量时的数字,但是这个可以修改的,可以修改成[.2,.75,.8],它是默认有[.5]的
# 1.添加percentiles参数
iris.describe(percentiles=[.35,.65,.85],include = "all") # 2.得到的结果为
Unnamed: 0	Sepal.Length	Sepal.Width	Petal.Length	Petal.Width	Species
count	150.000000	150.000000	150.000000	150.000000	150.000000	150
unique	NaN	NaN	NaN	NaN	NaN	3
top	NaN	NaN	NaN	NaN	NaN	versicolor
freq	NaN	NaN	NaN	NaN	NaN	50
mean	75.500000	5.843333	3.057333	3.758000	1.199333	NaN
std	43.445368	0.828066	0.435866	1.765298	0.762238	NaN
min	1.000000	4.300000	2.000000	1.000000	0.100000	NaN
35%	53.150000	5.500000	2.900000	3.330000	1.000000	NaN
50%	75.500000	5.800000	3.000000	4.350000	1.300000	NaN
65%	97.850000	6.200000	3.200000	4.800000	1.500000	NaN
85%	127.650000	6.700000	3.500000	5.600000	2.065000	NaN
max	150.000000	7.900000	4.400000	6.900000	2.500000	NaN
  • include参数默认是只计算数值型特征的统计量,当输入include=['O'],会计算离散型变量的统计特征
# 1.include参数默认是只计算数值型特征的统计量,当输入include=['O'],会计算离散型变量的统计特征
iris.describe(percentiles=[.35,.65,.85],include = ["O"]) # 2.得到的结果为Species
count	150
unique	3
top	versicolor
freq	50

1.2 Series

  • pd.Series(data, index) 

(1)data:数据,可以是NumPy的ndarray对象、字典、字典

(2)index:索引

1.2.1 通过列表创建Series

  • 不指定index的情况下
# 1.这里并没有指定index,所以python会采用整型数据作为该Series的index
ts = pd.Series(np.random.randn(4)) # 2.查看数据
ts# 3.得到的结果为
0   -0.239289
1    0.595429
2   -0.237222
3   -0.061077
dtype: float64
  • 指定index的情况下: 
# 1.导入numpy库
import numpy as np  # 2.随机在(0-4)(不包括4)的数字中生成一个一维数组,并设定其index 
ts = pd.Series(np.random.randn(4),index=["a","a","c","d"]) # 3.查看列表
ts# 4.得到的结果为
a   -0.113357
a   -0.003608
c    0.165057
d   -0.061333
dtype: float64

1.2.2通过字典创建Series

  • 通过使用字典来创建Series,且只传入一个字典,则结果中的Series中的索引就是原字典的键(有序排列)
# 1.这里是通过使用字典来创建Series,且只传入一个字典,则结果中的Series中的索引就是原字典的键(有序排列)
d = {"a":0.12,"b":0.33,"c":-0.17} # 2.创建Series
ts = pd.Series(d)# 3.查看结果
ts# 4.最终得到的结果为
a    0.12
b    0.33
c   -0.17
dtype: float64
  • 指定Series的index,这里只有一个值,但是并没有指定它对应的索引
# 1.指定Series的index,这里只有一个值,但是并没有指定它对应的索引
ts = pd.Series(2, index=["a","b","c"])# 2. 查看结果
ts# 3.得到的结果为
a    2
b    2
c    2
dtype: int64
  • 特别注意:Series是一个一维数组,它的值是一个或者是对应index索引的个数(有指定索引的),否则会报错

1.2.3数据索引与筛选

  • 读取iris.csv文件中的Petal.Length列的前5行数据
# 1.读取iris.csv文件中的Petal.Length列的前5行数据
ts = data["Petal.Length"].head(5) # 2.查看数据
ts# 3.得到的结果为
0    1.4
1    1.4
2    1.3
3    1.5
4    1.4
Name: Petal.Length, dtype: float64
  • 通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的第三个值
# 1.通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的第三个值
ts[2]# 2.得到的结果为
1.3
  •   通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的前四个值,不包括第四个
 # 1.通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的前四个值,不包括第四个
ts[:3]# 2.得到的结果为
0    1.4
1    1.4
2    1.3
Name: Petal.Length, dtype: float64
  • 通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的第一个和第三个数据值
# 1.通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的第一个和第三个数据值
ts[[1,3]]# 2.得到的结果为
1    1.4
3    1.5
Name: Petal.Length, dtype: float64
  • 通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的值,并从中选取小于前5个数据的平均值的值
# 1.通过切片操作来读取iris.csv文件中的Petal.Length列的前5行数据的值,并从中选取小于前5个数据的平均值的值
ts[ts < ts.mean()]# 2.得到的结果为
2    1.3
Name: Petal.Length, dtype: float64

1.2.4 唯一值和数量统计

  • unique(iterable)——计算Index中唯一值的数组

(1)iterable 参数是一个可迭代对象,可以是列表、元组、集合等

注意事项:

(1)unique() 函数只能用于可迭代对象,如列表、元组、集合等

(2)unique() 函数返回的是一个新的列表,不会修改原有可迭代对象中的元素

(3)unique() 函数是以元素的值作为唯一性的判断标准,而不是以元素的内存地址判断是否相同

(4)unique() 函数对于不可哈希的对象(如列表、集合等)会报错,所以在使用时需要确保可迭代对象中的元素是可哈希的

# 1.选择数据
species = data["Species"]# 2.使用unique()方法统计一共有几种鸢尾花   
species.unique()# 3.得到的结果为
array(['setosa', 'versicolor', 'virginica'], dtype=object)
  • value_counts(values,sort=True,ascending=False,normalize=False,bins=None,dropna=True)

(1)sort:是否要进行排序;默认进行排序

(2)ascending:默认降序排列

(3)normalize=False:是否要对计算结果进行标准化并显示标准化后的结果,默认是False

(4)bins:可以自定义分组区间,默认是否

(5)dropna:是否删除缺失值nan,默认删除

# 1.统计每种每种鸢尾花的数量 
species.value_counts() # 2.得到的结果为
versicolor    50
virginica     50
setosa        50
Name: Species, dtype: int64

注意:本文中数据以及内容若有侵权,请第一时间联系删除。

           本文是作者个人学习后的总结,未经作者授权,禁止转载,谢谢配合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/704079.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【刷题(3)】双指针

一、双指针问题基础 二、283. 移动零 1 题目 2 解题思路 &#xff08;1&#xff09;遍历数组&#xff0c;把不是零的放到一个新容器中 &#xff08;2&#xff09;遍历结束后&#xff0c;在新容器末尾插入0 &#xff08;3&#xff09;注意&#xff0c;必须在不复制数组的情况…

Spark RDD案例:统计网站每月访问量

这个项目利用Spark技术&#xff0c;通过统计网站访问记录中的日期信息&#xff0c;实现了对每月访问量的统计和排序。通过分析数据&#xff0c;我们可以了解到不同月份的网站访问情况&#xff0c;为进一步优化网站内容和推广策略提供数据支持。 使用Spark统计网站每月访问量 …

互联网上的IP地址定位的应用及意义

在当今高度互联的数字时代&#xff0c;IP地址定位技术发挥着重要作用&#xff0c;帮助企业、机构和个人在多种应用场景中提高效率、保障安全和优化服务。IP数据云将深入探讨IP地址定位技术的具体应用及其实际意义。 什么是IP地址定位&#xff1f; IP地址定位IP数据云 - 免费IP…

Vue 快速入门:Vue初级

语法规则 前端渲染 渲染有几种方式&#xff1a;原生js、js模板、Vue模板语法 原生js 使用字符串拼接 js模板语法 Vue.js 模板语法概述 Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;其模板语法非常灵活和直观。Vue 的模板语法基于 HTML&#xff0c;可以通过指令…

重磅!OpenAI发布GPT-4o,非常惊艳语音版ChatGPT!

5月15日凌晨&#xff0c;谷歌召开“ I/O 2024”&#xff0c;生成式AI成为本次大会的重点并发布了一系列产品和多款大模型。 其中&#xff0c;谷歌DeepMind发布了一款全新的AI 代理&#xff08;Agent&#xff09;产品Project Astra&#xff0c;可以像昨天OpenAI发布的GPT4o一样…

Lambda 表达式详解

LAMBDA ⚪ λ 希腊字母表中排序第十一位的字母, 英语名称为Lambda ⚪ 避免匿名内部类定义过多 ⚪ 其实质属于函数式编程的概念 ⚪ 也可称为闭包 ⚪ Lambda允许把一个函数作为方法的参数&#xff08;函数作为参数传递进方法中&#xff09;。 Lambda是在jdk8之后出现的所以现…

无代码无国界:我们正在走向软件安全的狂野西部吗?

我们使用的几乎所有东西都是基于代码构建的&#xff0c;从汽车到智能冰箱再到门铃。在企业中&#xff0c;无数的应用程序保持设备、工作流程和操作的运行。因此&#xff0c;当早期的无代码开发平台于 2010 年推出时&#xff0c;承诺为公民开发人员提供更易于访问的应用程序开发…

【Amplify_自己写的shadr遇到没有阴影的解决方案】

Amplify 自己写的shadr遇到没有阴影的解决方案 2020-01-21 16:04 本来我有个百试很灵的投射阴影脚本。 这次不灵光了&#xff01;地形内建材质&#xff0c;这个不支持投射的阴影~~奇了怪了。 可以采用引用的方式UsePass加入阴影部分代码&#xff0c;具体操作如下&#xff1…

惠普打印机无线网络连接设置

休息一下&#xff0c;灌个水。这次没多少内容&#xff0c;具体步骤惠普官网上都有&#xff0c;唯一增加的是对安装过程中踩的坑做了一个说明。 一&#xff0e;打印机无线网络连接设置步骤 惠普打印机设置无线网络连接&#xff0c;共16个步骤。 1. 在电脑上打开任意浏览器&am…

设计模式-动态代理

目录 定义 代理模式的优缺点 优点 缺点 应用场景 静态代理 动态代理 相关资料 定义 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它的概念很简单&#xff0c;它通过创建一个代理对象来控制对原始对象的访问。代理模式主要涉及两个…

【UE5.1 角色练习】01-使用小白人蓝图控制商城角色移动

目录 效果 步骤 一、导入资源 二、控制角色移动 三、更换角色移动动作 效果 步骤 一、导入资源 新建一个工程&#xff0c;然后在虚幻商城中将角色动画的相关资源加入工程&#xff0c;这里使用的是“动画初学者内容包”和“MCO Mocap Basics” 将我们要控制的角色添加进…

C# Winform+Halcon结合标准视觉工具

介绍 winform与halcon结合标准化工具实例 软件架构 软件架构说明 基于NET6 WINFORMHALCON 实现标准化视觉检测工具 集成相机通讯 集成PLC通讯 TCP等常见通讯 支持常见halcon算子 图形采集blob分析高精度匹配颜色提取找几何体二维码提取OCR识别等等 。。。 安装教程 …