2020-11-30数据科学包学习第五天笔记Pandas

1308-朱同学

发表文章数:18

首页 » 数据科学库 » 正文

需要掌握的例题

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

t = pd.read_csv("../datasourse/IMDB-Movie-Data.csv")
temp_genre_list = t["Genre"].str.split(",").tolist()
genre_list = list(set([i for j in temp_genre_list for i in j]))

#构造全为0的数组
zeros_list = pd.DataFrame(np.zeros((t.shape[0],len(genre_list))),columns=genre_list)

#给每个电影出现的位置赋值为1
for i in range(t.shape[0]):
    zeros_list.loc[i,temp_genre_list[i]] = 1

#统计每个电影分类的和
genre_count = zeros_list.sum(axis = 0)
genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.values
#画图
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()

1.数据合并join 按照行索引合并,两个dataframe的列名不能有重叠df1.join(df2)
2.数据合并merge按照指定的列把数据合并,默认inner,取交集;outer,并集;left,以左边为准,没有的补nan;right,以右边为准,没有的补nan。具体见下面的例子:
2020-11-30数据科学包学习第五天笔记Pandas

#统计美国和中国星巴克门店数   pdP10.py
import pandas as pd

t= pd.read_csv("../datasourse/星巴克/directory.csv")
#第一种方法:提取country里的值,变成series直接操作
t_country = t["Country"]
print(sum(t_country == "CN"))
print(sum(t_country == "US"))
#第二种方法:用groupby方法分组,用count统计每个国家的数据,最后提取中国和美国数据
country_group = t.groupby(by="Country")
group_count = country_group["Brand"].count()
print(group_count["CN"])
print(group_count["US"])
# 统计中国各省份星巴克门店数量 pdP11.py
import pandas as pd

t= pd.read_csv("../datasourse/星巴克/directory.csv")
china_data = t[t["Country"]=="CN"]
grouped = china_data.groupby(by="State/Province")["Brand"].count()

#使用多个条件进行分组
data1 = t["Brand"].groupby(by=[t["Country"],t["State/Province"]]).count()#数据是Series类型
data2 = t[["Brand"]].groupby(by=[t["Country"],t["State/Province"]]).count()#数据是DataFrame类型

使用[[ ]]两个中括号可以得到DataFrame类型
简单的索引操作:
• 获取index:df.index
• 指定index :df.index = [‘x’,‘y’]
• 重新设置index : df.reindex(list(“abcedf”)) 实则是对dataframe进行取行
• 指定某一列作为index :df.set_index(“Country”,drop=False) drop=False索引列保留在原数据
• 返回index的唯一值:df.set_index(“Country”).index.unique()

复合索引

2020-11-30数据科学包学习第五天笔记Pandas

#使用matplotlib呈现出店铺总数排名前10的国家 pdP12.py
import pandas as pd
from matplotlib import pyplot as plt

t= pd.read_csv("../datasourse/星巴克/directory.csv")
top10 = t.groupby(by="Country")["Brand"].count().sort_values(ascending = False)[:10]
_x = top10.index
_y = top10.values

plt.figure(figsize=(20,8))
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x)
plt.show()
#使用matplotlib呈现出每个中国每个城市的店铺数量 pdP13.py
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc")

t= pd.read_csv("../datasourse/星巴克/directory.csv")
china_data = t[t["Country"]=="CN"]
data = china_data.groupby(by="City")["Brand"].count().sort_values(ascending = False)[:50]
_x = data.index
_y = data.values

plt.figure(figsize=(20,8))
plt.bar(range(len(_x)),_y)
plt.xticks(range(len(_x)),_x,fontproperties = my_font,rotation = 45)
plt.show()
#现在我们有全球排名靠前的10000本书的数据,那么请统计一下下面几个问题:1.不同年份书的数量 2.不同年份书的平均评分情况  pdP14.py

import pandas as pd
from matplotlib import pyplot as plt

t= pd.read_csv("../datasourse/10000本书/books.csv")
t1 = t[pd.notnull(t["original_publication_year"])]
year_group = t1.groupby(by="original_publication_year")
book_numbers =year_group.count()["title"].sort_values(ascending=False)

mean_rating = year_group["average_rating"].mean()
_x = mean_rating.index
_y = mean_rating.values

plt.figure(figsize=(20,8))
plt.plot(range(len(_x)),_y)
plt.xticks(list(range(len(_x)))[::10],_x[::10].astype(int),rotation =45)
plt.show()

未经允许不得转载:作者:1308-朱同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-30数据科学包学习第五天笔记Pandas》 发布于2020-11-30

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录