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