概述
本次教程你将学会以下几点:
- 导包
- 自己创建数据
- 由数据创建frames对象
- 将数据集以csv格式导出
- 从csv文件读取
- 分析数据(找最大值)
- 展现数据
导包
# 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__)
python的版本为3.5.2 (default, Nov 12 2018, 13:43:14) [GCC 5.4.0 20160609]
pandas的版本为0.24.2
matplotilib的版本为3.0.3
创建数据
# 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)
[('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]
我们已经创建了一个数据集BabyDataSet,由名字和出生日两个字段组成,下面将用padas库将此数据集导出到csv文件中。
df = pd.DataFrame(BabyDataSet,columns=['姓名','出生日'])
print(df)
姓名 出生日
0 Bob 968
1 Jessica 155
2 Mary 77
3 John 578
4 Mel 973
df是一个pandas的DataFrame对象,你可以将它类似于SQL表或Excel表格的格式。下面看看df的一些操作。
df.to_csv('test.csv',index=False,header=False)
我们使用to_csv方法将数据集导出到test.csv文件内,并且设置唯一参数index、header的值为False,以此来阻止导出索引和标头名称,这方便我们后面理解它们的使用。下面是我们导出的test.csv文件内容:
读取数据
File_path = '/home/bd/pandas_lesson/test.csv'
df = pd.read_csv(File_path)
print(df)
Bob 968
0 Jessica 155
1 Mary 77
2 John 578
3 Mel 973
我们使用read_csv方法读取test.csv文件,发现它自动将第一条数据当作表头名称,这样就造成了一定的数据混乱。为阻止这个行为,我们可以在读取时加入一个参数header = None。
df = pd.read_csv(File_path,header=None)
print(df)
0 1
0 Bob 968
1 Jessica 155
2 Mary 77
3 John 578
4 Mel 973
可以发现,我们虽然阻止了它将第一条记录当成标头的行为,但它默认的标头是默认的数字0、1,太丑了。我们还可以在读取的时候加入参数names自定义标头名字。
df = pd.read_csv(File_path,header=None,names = ['姓名','出生日'])
print(df)
姓名 出生日
0 Bob 968
1 Jessica 155
2 Mary 77
3 John 578
4 Mel 973
下面我们将test.csv文件删掉。
import os
os.remove(File_path)
分析数据
DateFrame对象提供了dtypes属性,他可以用来查看所有列或指定列的数据类型。
print(df.dtypes)
姓名 object
出生日 int64
dtype: object
print("出生日的数据类型:{}".format(df.出生日.dtype))
print("姓名的数据类型:{}".format(df.姓名.dtype))
出生日的数据类型:int64
姓名的数据类型:object
DateFrame对象提供了一个对数据进行排序的方法:sort_values(),它可以指定一个或多个列名来进行正序或逆序的排序。DateFrame对象的head(num)方法用于展示前num条数据,于tail(()方法相反。
sorted = df.sort_values(['出生日'],ascending=False)
print(sorted.head(2))
姓名 出生日
4 Mel 973
0 Bob 968
sort_values()方法参数ascending用于指定是正序还是逆序。DateFrame对象还提供了max()、min()方法来查询某一列的最大值、最小值。
print(df['出生日'].max(),df['出生日'].min())
973 77
展示数据
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['出生日']表示出生日这一列的数据。
print(df['出生日'])
0 968
1 155
2 77
3 578
4 973
Name: 出生日, dtype: int64
df['姓名']表示标头为姓名这一列数据。
df['出生日'].max()表示出生日那一列中值最大的那条记录。
[df['出生日'] == df['出生日'].max()]等价于从所有标头为“出生日”的列中,找值最大的,返回结果如下:
print([df['出生日'] == df['出生日'].max()])
[0 False
1 False
2 False
3 False
4 True
Name: 出生日, dtype: bool]
df['姓名'][df['出生日'] == df['出生日'].max()]表示从所有标头为“出生日”的列中,找值最大,但返回的结果是值最大那行中标名为名字的记录。可以通过属性value直接取出值,返回列表。
print(df['姓名'][df['出生日'] == df['出生日'].max()])
4 Mel
Name: 姓名, dtype: object
print(df['姓名'][df['出生日'] == df['出生日'].max()].values)
['Mel']
与属性values相照应的是index,他会返回对应行的索引,可通过下标0直接取值。
print((df['姓名'][df['出生日'] == df['出生日'].max()].index)[0])
4
plt.annotate()方法用于给图表标注。在标注中,有两个要考虑的点:由参数xy
表示的标注位置和xytext
的文本位置。 这两个参数都是(x, y)
元组。arrowprops= {facecolor= '颜色',shrink = '数字' <1 收缩箭头}
最后
以上就是健壮小刺猬为你收集整理的Pandas教程——(一)的全部内容,希望文章能够帮你解决Pandas教程——(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复