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

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

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

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Pandas是一个Python库,用于数据处理和分析。在数据分析中,预处理是非常重要的一步,因为它可以帮助我们清洗和转换数据,使其更适合进行分析。Pandas提供了一些强大的预处理功能,包括数据清洗、数据转换、数据重塑和数据合并等。在使用Pandas进行数据分析时,预处理是必不可少的一步。 ### 回答2: 在数据分析中,数据的预处理是一个必要的过程。它的主要目的是清洗数据,准备数据,以便后续分析。在Python中,pandas是一种广泛使用的数据处理库。pandas可以通过其高效的数据结构和操作方法来清洗和处理数据。在本文中,将介绍pandas预处理的一些常见技术。 一、读取数据 在pandas中,使用read_csv()函数读取CSV格式的数据文件,read_excel()函数读取Excel格式的数据文件。它们都有很多选项,可以根据具体文件的格式进行设置。 二、查看数据 在pandas中,使用以下函数来查看数据: 1. head() - 显示数据框的前几行; 2. tail() - 显示数据框的后几行; 3. columns - 显示数据框的列名; 4. shape - 显示数据框的行列数; 5. info() - 显示数据框的基本信息,包括每列的名称、非空值数量和数据类型。 三、数据清洗 在数据清洗中,有以下一些常见的技术: 1. 删除重复行:使用drop_duplicates()函数; 2. 替换空值:使用fillna()函数; 3. 删除空值:使用dropna()函数; 4. 更改数据类型:使用astype()函数。 四、数据准备 在数据准备中,有以下一些常见的技术: 1. 数据合并:使用merge()函数; 2. 数据筛选:使用loc()函数或者iloc()函数; 3. 数据分组:使用groupby()函数; 4. 数据排序:使用sort_values()函数。 五、数据分析 在数据分析中,有以下一些常见的技术: 1. 数据聚合:使用agg()函数; 2. 统计描述:使用describe()函数; 3. 数据可视化:使用matplotlib或者seaborn库。 综上所述,pandas预处理是数据分析中必不可少的一步。通过使用pandas提供的函数和方法,可以方便地清理和处理数据,使其更容易被分析。 ### 回答3: PandasPython中最强大的数据处理库之一,它提供了DataFrame和Series这两种数据结构,可以快速便捷地处理数据。在数据分析过程中,我们往往需要先对数据进行预处理,以便后续的分析。Pandas提供了一系列的方法和函数,可以帮助我们进行数据的预处理。 首先,在进行数据分析之前,我们需要了解自己所面对的数据类型和数据结构。Pandas中的DataFrame结构就是类似于表格的结构,每一行代表一个样本,每一列代表一个属性。Series则是一维的数组结构。通过pandas.read_csv(),我们可以读取CSV格式的数据,并转化为DataFrame结构。 接下来,我们要对数据进行一些基本的处理,例如数据清洗、数据去重、缺失值处理、异常值处理等。在数据清洗过程中,我们往往需要对数据进行一些特殊的处理,例如字符串的分割、合并、替换等操作,Pandas提供了一系列能够对文本进行操作的函数。在数据去重方面,我们可以使用drop_duplicates()函数,它可以去除DataFrame中的重复记录。在处理缺失值时,Pandas提供了一系列的函数,如fillna()函数、dropna()函数,可以方便地将NaN值变为其他有意义的值,或者删除缺失值的行或列。在异常值处理方面,我们可以使用isoutlier()函数来找到数据中的异常值,并进行处理。 在数据预处理完成后,我们可以对数据进行一些统计分析,例如计算小计、计算总计、分位数、极差、方差、标准差等统计指标。我们可以使用describe()函数来获得数据的统计描述,还可以使用groupby()函数来对数据分组,使用agg()函数对每组进行计算统计指标。此外,我们还可以对数据进行排序、丢弃、合并等操作。 总之,Pandas是一个非常强大的Python库,可以轻松处理数据预处理和数据处理方面的任务。Pandas作为数据分析和数据处理的基础库,使用熟练后可以在数据分析中发挥更大的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherry晴

创作不易,多多包涵~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值