资源描述
pandas 1:入门+Series
Pandas,即python data analysis的组合缩写,是python语言中基于numpy和matplotlib搭建的第三方数据分析库,与后两者共同构成了python数据分析的基础工具,享有数据分析三剑客之名。
1 pandas导入
pandas模块的方法如下:
import pandas as pd # pd是用户为导入模块取的别名
2 pandas中的数据结构
pandas提供了Series和DataFrame两种数据结构。
3 Series
Series是一种一维的数据结构,包含一个数组的数据和一个与数据关联的索引(index ),索引值默认是从0起递增的整数。列表、字典等可以用来创建Series数据结构,与列表不同的是,Series的索引可以指定,类型可以为字符串型。
3.1 创建Series
功能:创建1个Series结构类型的对象,存储3名同学的身高值。
序号
代码
运行结果
说明
例1
import pandas as pd
s1=pd.Series([166,178,180])
print(s1)
0 166
1 178
2 180
dtype: int64
通过列表创建
索引默认
例2
import pandas as pd
s2=pd.Series([166,178,180],index=["s01","s02","s03"])
print(s2)
s01 166
s02 178
s03 180
dtype: int64
通过列表创建
索引指定
例3
import pandas as pd
s3 = pd.Series({'a':1, 'b': 2, 'c': 10, 'd': 20})
print(s3)
a 1
b 2
c 10
d 20
dtype: int64
通过字典创建
3.2 查看Series对象的属性值
功能:查看Series对象的index、values属性值。
序号
代码
运行结果
说明
例4
import pandas as pd
s4=pd.Series([166,178,180])
for i in s4.index:
print(i)
0
1
2
查看index
例5
import pandas as pd
s5=pd.Series([166,178,180])
for i in s5.values:
print(i)
166
178
180
查看values
例6
import pandas as pd
s6=pd.Series([166,178,180])
for i in s6:
print(i)
166
178
180
与例5结果相同
3.3 选取并修改Series对象中的值
功能:通过索引可以选取Series对象中的值,通过赋值语句可以修改Series对象中的值。
序号
代码
运行结果
说明
例7
import pandas as pd
s7=pd.Series([166,178,180])
s7[0]=168
print(s7)
0 168
1 178
2 180
dtype: int64
修改索引为0的数据为168
例8
import pandas as pd
s8=pd.Series([166,178,180],index=["s01","s02","s03"])
s8["s01"]=168
print(s8)
s01 168
s02 178
s03 180
dtype: int64
修改索引为“s01”的数据为168
例9
import pandas as pd
s9 = pd.Series({'a':1, 'b': 2, 'c': 10, 'd': 20})
s9['c']=123
print(s9)
a 1
b 2
c 123
d 20
dtype: int64
修改索引为‘c’的数据为123
课中例析题:
1.在 python 中为了对数据进行分析整理,可以使用的库是 ( )
A . requests 库 B. pandas库 C. matplotlib库 D . jieba 库
2.Pandas 中 Series 左列默认 index 是从( )开始生成。
A .0 B.1 C. NaN D.a
3.代码创建 Series 对象,第二行数据的下标是( )
import pandas as pd
s1=pd.Series ([188,167,156], index=["I.","II.","III."])
A.167 B.2. C. I. D.II.
4.下列有关 Series 说法错误的是( )
A.Series 中 index 和 values 长度必须一致
B.Series 中必须指定index
C.两个 index 不同的 Series 可以相加
D.Series 经过计算后的 index 顺序和计算前不一定一致
5.Pandas 中有两个重要的数据结构:___________、____________
pandas 2:DataFrame
1 DataFrame
DataFrame是一种二维的数据结构,由1个索引列(index)和若干个数据列组成,每个数据列可以是不同的类型。【DataFrame是由一组数据与一对索引(行索引和列索引)组成的表格型数据结构。其存储形式与Excel的数据存储形式很相近。】DataFrame可以看作是共享同一个index的Series的集合。创建DataFrame对象的方法很多,通常用一个相等长度的列表或字典来创建。
1.1 创建DataFrame
1.1.1 使用函数.DataFrame()创建DataFrame对象
功能:使用函数.DataFrame()创建DataFrame对象
序号
代码
运行结果
说明
例1
import pandas as pd
data=["a","b","c","d"]
df1 = pd.DataFrame(data)
print(df1)
0
0 a
1 b
2 c
3 d
通过列表创建,
创建一列数据
例2
import pandas as pd
data=[["a","A"],["b","B"],["c","C"],["d","D"]]
df2 = pd.DataFrame(data)
print(df2)
0 1
0 a A
1 b B
2 c C
3 d D
通过列表创建,
创建两列数据
例3
import pandas as pd
data = {"小写":["a","b","c","d"],
"大写":["A","B","C","D"]}
df3 = pd.DataFrame(data)
print(df3)
小写 大写
0 a A
1 b B
2 c C
3 d D
通过字典创建,
创建两列数据
例4
import pandas as pd
data = {"小写":["a","b","c","d"],
"大写":["A","B","C","D"]}
df4 = pd.DataFrame(data,index=["甲","乙","丙","丁"])
print(df4)
小写 大写
甲 a A
乙 b B
丙 c C
丁 d D
通过字典创建,
字典中的key值相当于列索引,如要加入行索引,可使用index=[ ]参数
例5
import pandas as pd
data = {"小写":["a","b","c","d"],
"大写":["A","B","C","D"]}
df5 = pd.DataFrame(data,columns=["大写","小写"])
print(df5)
大写 小写
0 A a
1 B b
2 C c
3 D d
columns可以设定数据列的顺序
1.1.2 直接读取数据文件创建DataFrame对象
功能:直接读取二维数据文件创建DataFrame对象
① read_excel() 可以从.xlsx文件导入生成DataFrame
② read_csv() 可以从.csv文件导入生成DataFrame
序号
代码
运行结果
说明
例6
import pandas as pd
df6=pd.read_excel("test.xlsx")
print(df6)
name sex age
0 Helen female 15
1 Bruce male 19
2 Jack male 17
导入.xlsx文件创建DataFrame对象。
(以下是test.xlsx中数据)
例7
import pandas as pd
df7=pd.read_csv("test.csv")
print(df7)
name sex age
0 Helen female 15
1 Bruce male 19
2 Jack male 17
导入.csv文件创建DataFrame对象。
(以下是test.csv中数据)
name,sex,age
Helen,female,15
Bruce,male,19
Jack,male,17
1.2 查看DataFrame对象的属性值
功能:查看Series对象的行索引index、列标题columns、值values,并行列转置。
序号
代码
运行结果
说明
例8
import pandas as pd
df8=pd.read_excel("test.xlsx")
for i in df8.index:
print(i)
0
1
2
行索引index
(以下是test.xlsx中数据)
例9
import pandas as pd
df9=pd.read_excel("test.xlsx")
for i in df9.columns:
print(i)
name
sex
age
①列标题columns
②df9.columns可简写为df9
例10
import pandas as pd
df10=pd.read_excel("test.xlsx")
for i in df10.values:
print(i)
['Helen' 'female' 15]
['Bruce' 'male' 19]
['Jack' 'male' 17]
值values
例11
import pandas as pd
df11=pd.read_excel("test.xlsx")
print(df11.T)
0 1 2
name Helen Bruce Jack
sex female male male
age 15 19 17
行列转置
1.3 选取并修改DataFrame对象中的值
1.3.1 选取DataFrame对象中的值
功能: DataFrame对象中的一列可以通过字典记法或属性来检索,可以通过布尔型数据选取满足条件的行,使用at[ ]方法可以根据行标签和列标签选取单个值。
① 选取方法1:法字典记法
② 选取方法2:属性
③ 选取方法3:布尔型数据
④ 选取方法4:at[ ]方法
序号
代码
运行结果
说明
例12
import pandas as pd
df12=pd.read_excel("test.xlsx")
print(df12.name)
0 Helen
1 Bruce
2 Jack
Name: name, dtype: object
字典记法。
(以下是test.xlsx中数据)
例13
import pandas as pd
df13=pd.read_excel("test.xlsx")
print(df13["sex"])
0 female
1 male
2 male
Name: sex, dtype: object
属性。
例14
import pandas as pd
df14=pd.read_excel("test.xlsx")
print(df14[df14["sex"]=="male"])
name sex age
1 Bruce male 19
2 Jack male 17
布尔型数据。
选取sex为male的数据。
例15
import pandas as pd
df15=pd.read_excel("test.xlsx")
print(df15.at[2,"name"])
Jack
at[ ]方法。
选取第3行”name”列数据。
1.3.2 通过赋值修改DataFrame对象中的值
功能: DataFrame对象中的列可以通过赋值来修改
序号
代码
运行结果
说明
例16
import pandas as pd
df16=pd.read_excel("test.xlsx")
df16.age=[16,20,18]
print(df16)
name sex age
0 Helen female 16
1 Bruce male 20
2 Jack male 18
(以下是test.xlsx中数据)
1.4 将DataFrame结果导出
功能: DataFrame对象导出为.xlsx文件可使用函数to_excel( )函数
DataFrame对象导出为.csv文件可使用函数to_csv( )函数
序号
代码
运行结果
说明
例17
import pandas as pd
data=[["a","A"],["b","B"],["c","C"],["d","D"]]
df17 = pd.DataFrame(data)
df17.to_excel("df2excel.xlsx")
df17.to_csv("df2csv.csv")
生成两个文件:
DataFrame结果导出在文件中
课中例析题:
1.在 pandas 库中用于查看列类型的函数是
A.pandas.DataFrame.shape
B.pandas.DataFrame.dtypes
C.pandas.DataFrame.columns
D.pandas.DataFrame.columns.dtypes
2.使用 to_excel()函数,读取 Excel 文件创建 DataFrame 对象,也可以使用 read_excel()函数,创建 Excel 文件保存数据。_____________(填:对或错)
3.请使用 at[]方法,获取一个 df 对象中第6行,“姓名”列数据:_____________
4.以下程序用 data 建立一个 DataFrame ,先后取出member和class数据,并转置显示。
______________________________________(1)__
data ={
'grade ':['Grade1','Grade1','Grade1','Grade2','Grade2'],
'class':[ 'Class 1',' Class 2', 'Class 3', 'Class 1', 'Class 2'],
'member':[43,45,44,46,47]
}
_____________________________________(2)___
print(df.T)
课后巩固题:
1.下列哪个不是 Series 对象的属性 ( )
A . index B . values C . name D . T
2.下列关于 DataFrame 的说法,错误的是( )
A .可以读取 Excel 文件创建 DataFrame 对象
B .创建 DataFrame 对象后,可以修改索引
C.可以将 Series 转换为 DataFrame
D.Series 和 DataFrame 之间不能进行运算
3.有如下 Python 程序段:
import pandas as pd
s1 = pd.Series ([120,130,180], index =["s01","s02","s03" ])
s1[1]=125
print (s1[ s1 <179])
执行代码后,输出的结果是( )
A. 120
125
180
B. s01 120
s02 125
C .s01 125
s02 130
D.120
125
4.有如下 Python 程序段:
import pandas as pd
data =[[1,2,3],[3,4,5],[6,7,8]]
df1= pd.DataFrame ( data , index =[" a "," b "," c "],columns =[" e ","f"," g "])
print (df1)
输出的结果是( )
A. e f g
1 2 3
3 4 5
6 7 8
B. e f g
a 1 2 3
b 3 4 5
c 6 7 8
C. a 1 2 3
b 3 4 5
c 6 7 8
D. a b c
e 1 2 3
f 3 4 5
g 6 7 8
5.Series和 DataFrame 是 pandas 模块中的数据结构,下列描述错误的是( )
A.DataFrame 中的索引可以通过属性来显示
B.Series 的下标索引值是默认从0起递增的整数
C.Series 是二维的, DataFrame 是一维的
D.列表、字典等可以用来创建 Series 数据结构
6.有如下 Python 程序段:
import pandas as pd
data =[88,89,96],[95,93,92],[90,87,95]]
df1 = pd . DataFrame ( data , index =["小明","小红","小兰"], columns =[“语文",“数学",“英语"])
下列操作错误的是( )
A . print ( df1["英语"])显示英语列的数据
B . print (df1.数学)显示数学列的数据
C . print ( df1. sort_values ( by ="语文")语文列数据降序排列
D . print ( df1 [df1.语文<90])显示小明同学的数据
7.观察下列程序语句,写出 print()的结果。(字符串的 dtype 是 object )
import pandas as pd
S = pd.Series ([" python "," C 十十"," JAVA "], index =["好","语","言"])
(1) for i in S :
print (i)
(2) for i in S.values :
print (i)
(3) for i in S.index :
print (i)
(4) print ( S )
8.小明的成绩如下所示,请用 DataFrame 表示,并且将数学成绩改为90。
Math 95
Chinese 90
English 98
Physic 80
Chemistry 85
8
展开阅读全文