0
点赞
收藏
分享

微信扫一扫

python学习之pandas库的使用总结


【1】读取CSV并进行透视

我们的原始数据格式:

python学习之pandas库的使用总结_pandas

① 读取数据

​pd.read_csv​​ 会读取csv表格并使用names指定读取后的列名称。

import pandas as pd

releaseNumOfYear = pd.read_csv("data/releaseNumOfYear.csv", header=None, names=['Year', 'Genre', 'ReleaseNum'])

这里会呈现什么格式呢?如下所示和我们Excel是一样的:

python学习之pandas库的使用总结_pandas_02

② 使用pivot进行透视

pivot函数用于从给定的表中创建出新的派生表,pivot有三个参数:索引、列和值

data = pd.pivot(releaseNumOfYear, index='Year', columns='Genre')

这里得到的data是什么呢?如下图所示:

python学习之pandas库的使用总结_数据格式_03

也就是把①中读取的纵表透视为了横表(宽表),原先的Year这一列变成了新的基础列(索引列),而Genre这一列变成了行,也就是列转行。每个单元格的值呢,则是ReleaseNum。

如何去掉ReleaseNum呢?如下所示

data['ReleaseNum']

python学习之pandas库的使用总结_获取数据_04

如上得到的data格式为pandas.core.frame.DataFrame,我们如何遍历呢?

【2】DataFrame的遍历

① 按行遍历

for index,row in releaseNumOfYear.iterrows():
print(index,row)

这里index不用说了,就是每一行的索引。但是row,可不是你看到的一行数据而是如下图所示格式:

python学习之pandas库的使用总结_python_05


也就是 print(index,row)每次只需打印如下所示:

0 Year               2019
Genre Unplugged
ReleaseNum 94
Name: 0, dtype: object

也可以根据列名获取数据不打印label,如下所示:

for index,row in releaseNumOfYear.iterrows():
print(row['Year'] , row['Genre'] , row['ReleaseNum'])

# 如第一行打印结果
2019 Unplugged 94

② shape 函数

​pandas.DataFrame.shape​​ 返回数据帧的形状。假设data为Dataframe格式数据有2行3列:

  • data.shape 返回data形状(2,3) 2行3列
  • data.shape[0] 返回行数 2
  • data.shape[1] 返回列数 3

【3】数据表的合并

① 格式一样数据表的合并

表格一:

python学习之pandas库的使用总结_数据_06

表格二:

python学习之pandas库的使用总结_获取数据_07

表格合并:

filmCountryNum_Sort = pd.read_csv("movie/filmCountryNum_Sort.csv", header=None)
filmCountryNum_Sort.columns = ["area", "Num"]

filmCountry_ratingAverage_Sort = pd.read_csv("movie/filmCountry_ratingAverage_Sort.csv", header=None)
filmCountry_ratingAverage_Sort.columns = ["area", "Average_Rating"]

countryNum_avergeRating = pd.merge(filmCountryNum_Sort, filmCountry_ratingAverage_Sort, on='area') # 合并两表

python学习之pandas库的使用总结_python_08


举报

相关推荐

0 条评论