我是靠谱客的博主 健壮小刺猬,这篇文章主要介绍Pandas教程——(一),现在分享给大家,希望可以做个参考。

本次教程你将学会以下几点:

  1. 导包
  2. 自己创建数据
  3. 由数据创建frames对象
  4. 将数据集以csv格式导出
  5. 从csv文件读取
  6. 分析数据(找最大值)
  7. 展现数据

导包

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Import all libraries needed for the tutorial # General syntax to import specific functions in a library: ##from (library) import (specific library function) from pandas import DataFrame, read_csv # General syntax to import a library but no functions: ##import (library) as (give the library a nickname/alias) import matplotlib.pyplot as plt import pandas as pd #this is how I usually import pandas import sys #only needed to determine Python version number import matplotlib #only needed to determine Matplotlib version number # Enable inline plotting %matplotlib inline print('Python version ' + sys.version) print('Pandas version ' + pd.__version__) print('Matplotlib version ' + matplotlib.__version__)
复制代码
1
2
3
python的版本为3.5.2 (default, Nov 12 2018, 13:43:14) [GCC 5.4.0 20160609] pandas的版本为0.24.2 matplotilib的版本为3.0.3

创建数据

复制代码
1
2
3
4
5
# The inital set of baby names and birth rates names = ['Bob','Jessica','Mary','John','Mel'] births = [968, 155, 77, 578, 973] BabyDataSet = list(zip(names,births)) print(BabyDataSet)
复制代码
1
[('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]

我们已经创建了一个数据集BabyDataSet,由名字和出生日两个字段组成,下面将用padas库将此数据集导出到csv文件中。

复制代码
1
2
df = pd.DataFrame(BabyDataSet,columns=['姓名','出生日']) print(df)
复制代码
1
2
3
4
5
6
姓名 出生日 0 Bob 968 1 Jessica 155 2 Mary 77 3 John 578 4 Mel 973

df是一个pandas的DataFrame对象,你可以将它类似于SQL表或Excel表格的格式。下面看看df的一些操作。

复制代码
1
df.to_csv('test.csv',index=False,header=False)

我们使用to_csv方法将数据集导出到test.csv文件内,并且设置唯一参数index、header的值为False,以此来阻止导出索引和标头名称,这方便我们后面理解它们的使用。下面是我们导出的test.csv文件内容:

读取数据

复制代码
1
2
3
File_path = '/home/bd/pandas_lesson/test.csv' df = pd.read_csv(File_path) print(df)
复制代码
1
2
3
4
5
Bob 968 0 Jessica 155 1 Mary 77 2 John 578 3 Mel 973

我们使用read_csv方法读取test.csv文件,发现它自动将第一条数据当作表头名称,这样就造成了一定的数据混乱。为阻止这个行为,我们可以在读取时加入一个参数header = None。

复制代码
1
2
df = pd.read_csv(File_path,header=None) print(df)
复制代码
1
2
3
4
5
6
0 1 0 Bob 968 1 Jessica 155 2 Mary 77 3 John 578 4 Mel 973

可以发现,我们虽然阻止了它将第一条记录当成标头的行为,但它默认的标头是默认的数字0、1,太丑了。我们还可以在读取的时候加入参数names自定义标头名字。

复制代码
1
2
df = pd.read_csv(File_path,header=None,names = ['姓名','出生日']) print(df)
复制代码
1
2
3
4
5
6
姓名 出生日 0 Bob 968 1 Jessica 155 2 Mary 77 3 John 578 4 Mel 973

下面我们将test.csv文件删掉。

复制代码
1
2
import os os.remove(File_path)

分析数据

DateFrame对象提供了dtypes属性,他可以用来查看所有列或指定列的数据类型。

复制代码
1
print(df.dtypes)
复制代码
1
2
3
姓名 object 出生日 int64 dtype: object
复制代码
1
2
print("出生日的数据类型:{}".format(df.出生日.dtype)) print("姓名的数据类型:{}".format(df.姓名.dtype))
复制代码
1
2
出生日的数据类型:int64 姓名的数据类型:object

DateFrame对象提供了一个对数据进行排序的方法:sort_values(),它可以指定一个或多个列名来进行正序或逆序的排序。DateFrame对象的head(num)方法用于展示前num条数据,于tail(()方法相反。

复制代码
1
2
sorted = df.sort_values(['出生日'],ascending=False) print(sorted.head(2))
复制代码
1
2
3
姓名 出生日 4 Mel 973 0 Bob 968

sort_values()方法参数ascending用于指定是正序还是逆序。DateFrame对象还提供了max()、min()方法来查询某一列的最大值、最小值。

复制代码
1
print(df['出生日'].max(),df['出生日'].min())
复制代码
1
973 77

展示数据

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
df['出生日'].plot() # Maximum value in the data set MaxValue = df['出生日'].max() # Name associated with the maximum value MaxName = df['姓名'][df['出生日'] == df['出生日'].max()].values MaxNane_index = df['姓名'][df['出生日'] == df['出生日'].max()].index[0] Text = str(MaxValue) + " - " + MaxName # Add text to graph plt.annotate(Text, xy=(MaxNane_index, MaxValue), xytext=(MaxNane_index+1, MaxValue), arrowprops=dict(facecolor='black', shrink=0.05))

df['出生日'].plot()方法用于将标头为出生日的一列数据以图的形式表现出来,X轴对应每一行的索引号。

df['出生日']表示出生日这一列的数据。

复制代码
1
print(df['出生日'])
复制代码
1
2
3
4
5
6
0 968 1 155 2 77 3 578 4 973 Name: 出生日, dtype: int64

df['姓名']表示标头为姓名这一列数据。

df['出生日'].max()表示出生日那一列中值最大的那条记录。

[df['出生日'] == df['出生日'].max()]等价于从所有标头为“出生日”的列中,找值最大的,返回结果如下:

复制代码
1
print([df['出生日'] == df['出生日'].max()])
复制代码
1
2
3
4
5
6
[0 False 1 False 2 False 3 False 4 True Name: 出生日, dtype: bool]

df['姓名'][df['出生日'] == df['出生日'].max()]表示从所有标头为“出生日”的列中,找值最大,但返回的结果是值最大那行中标名为名字的记录。可以通过属性value直接取出值,返回列表。

复制代码
1
print(df['姓名'][df['出生日'] == df['出生日'].max()])
复制代码
1
2
4 Mel Name: 姓名, dtype: object
复制代码
1
print(df['姓名'][df['出生日'] == df['出生日'].max()].values)
复制代码
1
['Mel']

与属性values相照应的是index,他会返回对应行的索引,可通过下标0直接取值。

复制代码
1
print((df['姓名'][df['出生日'] == df['出生日'].max()].index)[0])
复制代码
1
4

plt.annotate()方法用于给图表标注。在标注中,有两个要考虑的点:由参数xy表示的标注位置和xytext的文本位置。 这两个参数都是(x, y)元组。arrowprops= {facecolor= '颜色',shrink = '数字' <1 收缩箭头}

 

最后

以上就是健壮小刺猬最近收集整理的关于Pandas教程——(一)的全部内容,更多相关Pandas教程——(一)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(95)

评论列表共有 0 条评论

立即
投稿
返回
顶部