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