pandas两个数据结构Series与DataFrame使用

seires 对象

1.创建一个series对象 Series()

语法:s=pd.Series(data,index=index)

参数说明: 

data:表示数据,支持Python字典、多维数组、标量值(即只有大小,没有方向的量。也就是说,只是一个数值,如s=pd.Series(5)) 

index:表示行标签(索引) 

返回值:Series对象

注意:data参数是多维数组时,index的长度必须与data长度一致,如果没有指定index参数,会自动创建数值型索引(从0~data数据长度-1)

2.手动设置series索引

手动设置series索引通过index参数设置,index=[]

3.series位置索引

位置索引是从0开始的,以此类推

import pandas as pd
s1=pd.Series([88,60,75])
print(s1[0])

运行结果 :88 

注意:series不能使用[-1]定位索引

4.series标签索引

Series标签索引与位置索引方法类似,用[ ]表示,里面是索引名称,注意index的数据类型是字符串,如果需要获取多个标签索引值,用[[ ]]表示

5.series切片索引

用标签索引做切片,包头包尾(即包含索引开始位置的数据,也包含索引结束位置的数据)

用位置索引做切片,和list列表用法一样,包头不包尾(即包含索引开始位置的数据,不包含索引结束位置的数据)

s2=pd.Series([88,60,75,34,68])
print(s2[1:4])

运行结果:1 60 2 75 3 34  

6.获取series索引和值

获取Series索引和值主要使用Series的index和values方法

import pandas as pd
s1=pd.Series([88,60,75])
print(s1.index)
print(s1.values)

 运行结果:RangeIndex(start=0, stop=3, step=1) [88 60 75]


DataFrame对象

1.创建一个DataFrame对象

语法:pandas.DataFrame(data,index,columns,dtype,copy)

参数说明: 

data:表示数据,可以是ndarray数组、Series对象、列表、字典等。 

index:表示行标签(索引)。

columns:列标签(索引)。 

dtype:每一列数据的数据类型,其与Python数据类型有所不同,如object数据类型对应的是Python的字符型

通过二维数组创建数据

data=[[1,2,3,4],[3,4,5,6],[4,5,6,7]]
index=[0,1,2]
columns=['语文','数学','英语','地理']
df=pd.DataFrame(data=data,index=index,columns=columns)
df

通过字典创建

pd.DataFrame({columns:[data数据]},index=[])

pd.set_option('display.unicode.east_asian_width',True)
df=pd.DataFrame({
    '语文':[110,106,88],
    '数学':[65,57,43],
    '英语':[78,89,90]
},index=[0,1,2])
df

注意字典中的value值只能是一维数组或单个的简单数据类型,如果是数组,要求所有数组长度一致;如果是单个数据,则每行都添加相同数据。

2.导入外部数据

1.导入.xls或.xlsx文件   导入Excel文件 read_excel()

参数:

io:字符串,.xls或.xlsx文件路径或类文件对象。 

sheet_name:None、字符串、整数、字符串列表或整数列表,默认值为0。字符串用于工作表名称,整数为索引表示工作表位置,字符串列表或整数列表用于请求多个工作表,为None时获取所有工作表

header:指定作为列名的行,默认值为0,即取第一行的值为列名。数据为除列名以外的数据;若数据不包含列名,则设置header=None。 

names:默认值为None,要使用的列名列表。 

index_col:指定列为行索引,默认值为None,索引0是DataFrame的行标签。

usecols:int、list列表或字符串,默认值为None。 如果为None,则解析所有列。 如果为int,则解析最后一列。 如果为list列表,则解析列号列表的列。 如果为字符串,则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。 

df2=pd.read_excel('1.xlsx',usecols=['姓名','生日','班级'])
df2

 

 

squeeze:/skwiːz/ 布尔值,默认值为False,如果解析的数据只包含一列,则返回一个Series。 

dtype:列的数据类型名称或字典,默认值为None。例如{'a':np.float64,'b':np.int32}。 

nrows:/rəʊz/导入前多少行

skiprows:省略指定行数的数据,从第一行开始。

skipfooter:省略指定行数的数据,从尾部数的行开始

df2=pd.read_excel('1.xlsx',sheet_name=1)
df2

2.导入.csv文件  .txt文件 read_csv()

常用参数说明: 

filepath_or_buffer:字符串,文件路径,也可以是URL链接。 

sep、delimiter:字符串,分隔符。

header:指定作为列名的行,默认值为0,即取第1行的值为列名。数据为除列名以外的数据;若数据不包含列名,则设置header=None。 

names:默认值为None,要使用的列名列表。 

index_col:指定列为索引列,默认值为None,索引0是DataFrame的行标签。 

usecols:int、list列表或字符串,默认值为None。 如果为None,则解析所有列。 如果为int,则解析最后一列。 如果为list列表,则解析列号列表的列。 如果为字符串,则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。 dtype:列的数据类型名称或字典,默认值为None。例如{'a':np.float64,'b':np.int32}

parse_dates:布尔类型值、int类型值的列表、列表或字典,默认值为False。可以通过parse_dates参数直接将某列转换成datetime64日期类型。例如,df1=pd.read_csv('1月.csv', parse_dates=['订单付款时间'])。 

parse_dates为True时,尝试解析索引。 

parse_dates为int类型值组成的列表时,如[1,2,3],则解析1、2、3列的值作为独立的日期列。 

parse_date为列表组成的列表,如[[1,3]],则将1、3列合并,作为一个日期列使用。

df=pd.read_csv('data.csv',encoding='gbk',parse_dates=[0,1,2,3])
df

parse_date为字典时,如{'总计':[1, 3]},则将1、3列合并,合并后的列名为“总计”。 

encoding:字符串,默认值为None,文件的编码格式。Python常用的编码格式是UTF-8。 中文编码:'gbk'

df=pd.read_csv('data.csv',encoding='gbk')
df

3.导入html文件 read_html()

常用参数说明: 

io:字符串,文件路径,也可以是URL链接。网址不接受https,可以尝试去掉https中的s后爬取

match:正则表达式,返回与正则表达式匹配的表格。 

flavor:/ˈfleɪvə(r)/解析器默认为lxml。 

header:指定列标题所在的行,列表list为多重索引。 

index_col:指定行标题对应的列,列表list为多重索引。 

encoding:字符串,默认为None,文件的编码格式。

2.数据抽取 loc()和iloc()

区别:

loc属性:以列名(columns)和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列

iloc属性:以行和列位置索引(即0,1,2,…)作为参数,0表示第1行,1表示第2行,以此类推。当只有一个参数时,默认是行索引,即抽取整行数据,包括所有列

抽取多行数据

通过loc属性和iloc属性指定行名和行索引即可实现抽取任意多行数据

df1=df.loc[['小明','小兰']]
df1
df1=df.iloc[[0,2]]
df1

如果想要连续的抽取多行数据,使用“:”

df1=df.loc['小明':'小兰']
df1

抽取指定行和列

df.loc/iloc[行,列],如果想要获取所有行或者列,可以使用:获取

df1=df[['语文','数学']]
df1
df1=df.loc[:,['语文','数学']]
df1
df1=df.iloc[:,[0,2]]
df1

 按指定条件抽取数据

df1=df.loc[(df['语文']>100)&(df
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值