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

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

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

使用Python中的pandas库将数据保存到Excel中,可以按照以下步骤进行操作。 首先,需要导入pandas库,如下所示: ```python import pandas as pd ``` 然后,可以使用pandas的DataFrame对象来存储数据,如下所示: ```python data = {"name":["lily","alice"],"cost":[100,20]} df = pd.DataFrame(data) ``` 接下来,可以创建一个Excel写入器(ExcelWriter)对象,并指定要保存的Excel文件路径,如下所示: ```python writer = pd.ExcelWriter("example.xlsx") ``` 然后,可以使用DataFrame的to_excel方法将数据写入到Excel中的一个或多个sheet中,如下所示: ```python df.to_excel(writer, sheet_name='sheet1') ``` 如果要写入多个sheet,可以重复调用to_excel方法,并指定不同的sheet名称,如下所示: ```python df2 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}) df2.to_excel(writer, sheet_name='sheet2') ``` 最后,要保存Excel文件,可以调用ExcelWriter对象的save方法,如下所示: ```python writer.save() ``` 这样就完成了将数据保存到Excel文件中的操作。完整的代码示例如下: ```python import pandas as pd data = {"name":["lily","alice"],"cost":[100,20]} df = pd.DataFrame(data) writer = pd.ExcelWriter("example.xlsx") df.to_excel(writer, sheet_name='sheet1') df2 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]}) df2.to_excel(writer, sheet_name='sheet2') writer.save() ``` 这段代码将会创建一个名为"example.xlsx"的Excel文件,并将两个DataFrame对象的数据分别保存在两个不同的sheet中。 希望这个回答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【文件处理】——Python pandas 写入数据到excel中](https://blog.csdn.net/qq_45769063/article/details/121268110)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [python调用pandas保存excel](https://blog.csdn.net/weixin_46329735/article/details/124674752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cherry晴

创作不易,多多包涵~

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

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

打赏作者

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

抵扣说明:

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

余额充值