本文目录:
- 一、Series
- 1.创建Series
- 通过ndarray创建的Series
- 通过dict创建Series
- 通过list创建Series
- 2.Series的属性
- 3.访问Series数据
- 4.更新、插入和删除
- 更新Series
- 追加Series和插入单个值
- 删除Series元素
- 二、DataFrame
- 1.创建DataFrame
- 通过dict创建DataFrame
- 通过list创建DataFrame
- 通过Series创建DataFrame
- 2.DataFrame属性
- 访问DataFrame的属性
- 3.访问DataFrame首尾元素
- 4.更新、删除和插入
- 更新DataFrame
- 删除和插入DataFrame
- drop()方法
- 三、Index
- 四、Plot
- 1.调用plot.pie()对生成的一列随机数的Series数据绘制饼图
- 2.调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
- 3.调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
- 4.调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
Pandas具有Series和DataFrame两个最重要的数据类型:
Series:一维
DataFrame:二维
一、Series
1.创建Series
创建Series对象的函数是Serier(),主要参数是data和index:
pandas.Series(data=None,index=None,name=None)
参数说明:
- data:接收array或者dict。表示接收的数据,默认None
- index:接收array或者list。表示索引,必须与数据长度相等,默认None
- name:接收string或者dict,表示Series对象的名称,默认None
通过ndarray创建的Series
import pandas as pd
import numpy as np
print('通过ndarray创建的Series为:\n',pd.Series(np.arange(3),index=['a','b','c'],name='ndarray'))
通过ndarray创建的Series为:
a 0
b 1
c 2
Name: ndarray, dtype: int32
通过dict创建Series
dict的键作为Series的索引,dict的值作为Series的值,因此无需传入index参数。
import pandas as pd
dict = {'a':0,'b':1,'c':2,'d':3,'e':4}
print('通过dict创建的Series为:\n',pd.Series(dict))
通过dict创建的Series为:
a 0
b 1
c 2
d 3
e 4
dtype: int64
通过list创建Series
import pandas as pd
list1 = [0,1,2,3,4]
print('通过list创建的Series为:\n',pd.Series(list1,index=['a','b','c','d','e']))
通过list创建的Series为:
a 0
b 1
c 2
d 3
e 4
dtype: int64
2.Series的属性
Series拥有以下8个属性:
- values:以ndarray格式返回Series对象的所有元素
- index:返回Series对象的索引
- dtype:返回Series对象的数据类型
- shape:返回Serise对象的形状
- nbytes:返回Series对象的字节数
- ndim: 返回Series的维度
- size:返回Series对象的个数
- T:返回Series对象的转置
import pandas as pd
seriesl = pd.Series([1,2,3,4])
print('seriesl:\n{}'.format(seriesl))
print('seriesl.values:{}'.format(seriesl.values))
print('seriesl.index:{}'.format(seriesl.shape))
print('seriesl.ndim:{}'.format(seriesl.ndim))
seriesl:
0 1
1 2
2 3
3 4
dtype: int64
seriesl.values:[1 2 3 4]
seriesl.index:(4,)
seriesl.ndim:1
3.访问Series数据
import pandas as pd
series2 = pd.Series([1,2,3,4,5,6,7],index=['A','B','C','D','E','F','G'])
print('series2位于第一位置的数据为:',series2[0])
print('E is {}\n'.format(series2['E']))
series2位于第一位置的数据为: 1
E is 5
4.更新、插入和删除
更新Series
import pandas as pd
list1=[1,2,3,4,5]
seriesl = pd.Series(list1,index=['a','b','c','d','e'],name='List')
print('seriesl:\n{}'.format(seriesl))
# 更新元素
seriesl['a'] = 3
print('更新后的Seriesl为:\n',seriesl)
seriesl:
a 1
b 2
c 3
d 4
e 5
Name: List, dtype: int64
更新后的Seriesl为:
a 3
b 2
c 3
d 4
e 5
Name: List, dtype: int64
追加Series和插入单个值
通过append()方法在原来的Series上追加新的Series。若只在原来Serise上插入单个值,采用赋值方式。
import pandas as pd
list1 = [0,1,2,3,4]
series1 = pd.Series(list1,index=['a','b','c','d','e'],name='list')
print('seriesl:\n{}'.format(seriesl))
series2 = pd.Series([4,5],index=['f','g'])
# 追加Series
print('在Series1后插入series2为:\n',series1.append(series2))
seriesl:
a 3
b 2
c 3
d 4
e 5
Name: List, dtype: int64
在Series1后插入series2为:
a 0
b 1
c 2
d 3
e 4
f 4
g 5
dtype: int64
删除Series元素
import pandas as pd
list1 = [0,1,2,3,4]
series1 = pd.Series(list1,index=['a','b','c','d','e'],name='list')
print('series1:\n{}'.format(series1))
# 删数据
series1.drop('e',inplace=True)
print('删除e索引后的series:\n',series1)
series1:
a 0
b 1
c 2
d 3
e 4
Name: list, dtype: int64
删除e索引后的series:
a 0
b 1
c 2
d 3
Name: list, dtype: int64
二、DataFrame
Data类似于数据库中的表,既有行索引也有列索引,DataFrame可以看做是Series组成的字典,每个Series是DataFrame的一列。
1.创建DataFrame
DataFrame语法结构:
pandas.DataFrame(data=None,columns=None,dtype=None,copy=False)
参数说明:
- data:接收ndarray、dict、list或者DataFrame。表示输入数据,默认None
- index:接收index、ndarray。表示索引,默认None
- columns:接收index,ndarray。表示列标签。默认None
通过dict创建DataFrame
import pandas as pd
dict1 = {'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]}
print('通过dict创建的DataFrame为:\n ',pd.DataFrame(dict1,index=['a','b','c','d','e']))
通过dict创建的DataFrame为:
col1 col2
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
通过list创建DataFrame
import pandas as pd
list5 =[[0,5],[1,6],[2,7],[3,8],[4,9]]
print('通过list创建的DataFrame为:\n',pd.DataFrame(list5,index=['a','b','c','d','e'],columns=['col1','col5']))
通过list创建的DataFrame为:
col1 col5
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
通过Series创建DataFrame
以Series创建DataFrame,每个Series为一行,而不是一列:
import pandas as pd
noteSeries = pd.Series(['C','D','E','F','G','A','B'],index = [1,2,3,4,5,6,7])
weekdaySeries = pd.Series(['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],index = [1,2,3,4,5,6,7])
df4 = pd.DataFrame([noteSeries,weekdaySeries])
print('df4:\n{}'.format(df4))
df4:
1 2 3 4 5 6 7
0 C D E F G A B
1 Mon Tue Wed Thu Fri Sat Sun
2.DataFrame属性
DataFrame是二维数据结构,包含列索引,比Series具有更多的属性。DataFrame常见的属性及其说明如下:
- values:以ndarray的格式返回DataFrame对象所有的元素
- index:但会DataFrame对象的Index
- columns:返回DataFrame对象所有的列标签
- dtypes:返回DataFrame对象的数据类型
- axes:返回DataFrame对象的轴标签
- ndim:返回DataFrame的维度
- size:返回DataFrame对象的个数
- shape:返回DataFrame的形状
访问DataFrame的属性
import pandas as pd
df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
print(df)
print('DataFrame的index为:',df.index)
print('DataFrame的列标签为:',df.columns)
print('DataFrame的轴标签',df.axes)
print('DataFrame的维度:',df.ndim)
print('DataFrame的维度:',df.shape)
col1 col2
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
DataFrame的index为: Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’)
DataFrame的列标签为: Index([‘col1’, ‘col2’], dtype=‘object’)
DataFrame的轴标签 [Index([‘a’, ‘b’, ‘c’, ‘d’, ‘e’], dtype=‘object’), Index([‘col1’, ‘col2’], dtype=‘object’)]
DataFrame的维度: 2
DataFrame的维度: (5, 2)
3.访问DataFrame首尾元素
head()和tail()方法用于访问DataFrame前n行和后n行数据,默认返回5行数据。
print('默认返回前5行数据:\n',df.head())
print('默认返回后3行数据:\n',df.tail(3))
默认返回前5行数据:
col1 col2
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
默认返回后3行数据:
col1 col2
c 2 7
d 3 8
e 4 9
4.更新、删除和插入
更新DataFrame
import pandas as pd
df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
print('DataFrame为:\n',df)
# 更新列
df['col1']=[10,11,12,13,14]
print('更新后的DataFrame为\n:',df)
DataFrame为:
col1 col2
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
更新后的DataFrame为
: col1 col2
a 10 5
b 11 6
c 12 7
d 13 8
e 14 9
删除和插入DataFrame
import pandas as pd
df3 = pd.DataFrame({'note':['C','D','E','F','G','A','B'],'weekday':['Mon','Tue','Wed','Thu','Fri','Sat','Sun']})
print('df3:\n{}'.format(df3))
df3['No.'] = pd.Series([1,2,3,4,5,6,7]) # 采用赋值的方法插入列 相当于df3['No.'] = [1,2,3,4,5,6,7]
print('df3:\n{}'.format(df3))
del df3['weekday'] # 删除列的方法有很多,如del()、pop()、drop()等
print('df3:\n{}'.format((df3)))
df3:
note weekday
0 C Mon
1 D Tue
2 E Wed
3 F Thu
4 G Fri
5 A Sat
6 B Sun
df3:
note weekday No.
0 C Mon 1
1 D Tue 2
2 E Wed 3
3 F Thu 4
4 G Fri 5
5 A Sat 6
6 B Sun 7
df3:
note No.
0 C 1
1 D 2
2 E 3
3 F 4
4 G 5
5 A 6
6 B 7
drop()方法
drop()犯法可以删除行或者列,基本语法格式如下:
DataFrame。drop(labels,axis,levels,inplace)
参数说明如下:
- labels:表示删除行或者列的标签
- axis:接收0或者1,0表示删除行,1表示删除列,默认是0
- levels:接收int型或者索引名,表示索引级别
- inplace:接收bool型,表示操作是否对原数据生效,默认为False
import pandas as pd
df = pd.DataFrame({'col1':[0,1,2,3,4],'col2':[5,6,7,8,9]},index=['a','b','c','d','e'])
df['col3'] = [15,16,17,18,19]
print('插入列后的DataFrame为:\n',df)
df.drop(['col3'],axis=1,inplace = True)
print('删除col3列DataFrame为:\n',df)
# 删除行
df.drop('a',axis=0,inplace=True)
print('删除a行的DataFrame为:\n',df)
插入列后的DataFrame为:
col1 col2 col3
a 0 5 15
b 1 6 16
c 2 7 17
d 3 8 18
e 4 9 19
删除col3列DataFrame为:
col1 col2
a 0 5
b 1 6
c 2 7
d 3 8
e 4 9
删除a行的DataFrame为:
col1 col2
b 1 6
c 2 7
d 3 8
e 4 9
三、Index
Index对象可以通过pandas.Index()函数创建,也可以通过创建数据对象Series、DataFrame时接收index或者column参数创建,前者属于显示创建,后者属于隐式创建。
Index对象属性说明:
- is_monotonic:当元素均大于前一个元素时,返回True
- is_unique:当Index没有重复值时,返回True
四、Plot
Matplotlib绘制图表需要各个基础组件对象,工作量较大。而Pandas使用行列标签以及分组信息,较为简便的完成图表的制作,Pandas作图函数:
- Plot():绘制线性二维图、折线图
- Pie():绘制饼形图
- Hist():绘制二维条形直方图
- Boxplot():绘制样本数据箱型图
- Plot(logy = True):绘制Y轴对数图形
- Plot(year=error):绘制误差条形图
1.调用plot.pie()对生成的一列随机数的Series数据绘制饼图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 调用plot.pie()对生成的一列随机数的Series数据绘制饼图
df1 = pd.Series(3*np.random.rand(4),index=['a','b','c','d'],name='series')
# print(df1)
df1.plot.pie(figsize=(6,6))
plt.show()
# df1.plot()、
2.调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
# 调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
df2 = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
# print(df2)
df2.plot.bar()
plt.show()
3.调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
# 调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
df3 = pd.DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E'])
df3.plot.box()
plt.show()
4.调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
# 调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
df4 = pd.DataFrame(np.random.rand(50,4),columns=['a','b','c','d'])
df4.plot.scatter(x='a',y='b')
plt.show()
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 调用plot.pie()对生成的一列随机数的Series数据绘制饼图
df1 = pd.Series(3*np.random.rand(4),index=['a','b','c','d'],name='series')
# print(df1)
df1.plot.pie(figsize=(6,6))
plt.show()
# df1.plot()、
# 调用plot.bar()对生成的四列随机数的DataFrame绘制条形图
df2 = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
# print(df2)
df2.plot.bar()
plt.show()
# 调用plot.box()对生成的五列随机数的DataFrame绘制箱型图
df3 = pd.DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E'])
df3.plot.box()
plt.show()
# 调用plot.scatter()对生成的四列随机数的DataFrame数据绘制散点图
df4 = pd.DataFrame(np.random.rand(50,4),columns=['a','b','c','d'])
df4.plot.scatter(x='a',y='b')
plt.show()