0
点赞
收藏
分享

微信扫一扫

零基础学Python:Pandas用法


零基础学Python:Pandas用法_原力计划

本文目录:

  • ​​一、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个属性:

  1. values:以ndarray格式返回Series对象的所有元素
  2. index:返回Series对象的索引
  3. dtype:返回Series对象的数据类型
  4. shape:返回Serise对象的形状
  5. nbytes:返回Series对象的字节数
  6. ndim: 返回Series的维度
  7. size:返回Series对象的个数
  8. 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常见的属性及其说明如下:

  1. values:以ndarray的格式返回DataFrame对象所有的元素
  2. index:但会DataFrame对象的Index
  3. columns:返回DataFrame对象所有的列标签
  4. dtypes:返回DataFrame对象的数据类型
  5. axes:返回DataFrame对象的轴标签
  6. ndim:返回DataFrame的维度
  7. size:返回DataFrame对象的个数
  8. 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作图函数:

  1. Plot():绘制线性二维图、折线图
  2. Pie():绘制饼形图
  3. Hist():绘制二维条形直方图
  4. Boxplot():绘制样本数据箱型图
  5. Plot(logy = True):绘制Y轴对数图形
  6. 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()、

零基础学Python:Pandas用法_python_02

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()

零基础学Python:Pandas用法_pandas_03

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()

零基础学Python:Pandas用法_开发语言_04

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()

零基础学Python:Pandas用法_python_05

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()


举报

相关推荐

0 条评论