利用pandas做简单的数据分析

2020-11-21 54 pandas学习体验

# 前言

前几个星期我通过看网课来学习python,但是由于效率太低,于是这两个星期在学姐的帮助下初步接触了数据分析的相关知识,第一个了解到的就是pandas,故利用本周的博客来记录我初步学习利用pandas进行简单数据分析的过程。首先是对pandas包进行了安装,然后上网查询了pandas的一些基础命令,接着对网上关于利用pandas进行数据分析的简单项目进行学习。
除此之外,还将总结一些本周学习到的关于python需要注意的tips。

# 数据分析

数据分析的流程概括起来为:数据的读写-->数据的处理和计算-->数据的分析建模-->数据的可视化

# pandas

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。;;

# 利用pandas做简单的数据分析

# 了解数据

主题:探索Chipotle快餐数据

import pandas as pd  # 导入必要的库
path1 = "../input/pandas_exercise/exercise_data/chipotle.tsv"  # 导入数据集
chipo = pd.read_csv(path1, sep = '\t')  #将数据存入一个名为chipo的数据框内
chipo.head(10) # 查看前10行的内容 
1
2
3
4

运行结果: 查看前10行的内容.png

# 被下单数最多的item是什么
c = chipo[['item_name','quantity']].groupby(['item_name'],as_index=False).agg({'quantity':sum})
c.sort_values(['quantity'],ascending=False,inplace=True)
c.head()  

1
2
3
4
5

out:
被下单次数最多的商品.png

总结:利用pandas做数据分析,首先需要引入pandas库,然后需要导入数据集(为我们收集到的数据资料),我们可以通过简单的命令来得到数据的县官信息。

# 数据的过滤与排序

主题:探索2012欧洲杯数据

import pandas as pd
path2 = "../input/pandas_exercise/exercise_data/Euro2012_stats.csv" 
euro12 = pd.read_csv(path2)
euro12
# 显示数据框具体信息
euro12.shape[0]
# 求数据共有多少列
euro12.info()
# 筛选数据并创建新的数据框
discipline = euro12['Team','Yellow Cards','Red cards']
discipline
1
2
3
4
5
6
7
8
9
10
11

out:
筛选并创建新的数据框.png

# 对数据框按顺序排序
discipline.sort_values(['Red Cards','Yellow Cards'], ascending = False)
1
2

out:
git_remote.png

# 计算平均值
round(discipline['Yellow Cards'].mean())
# 筛选符合标准的数据(goal是大于6)
euro12[euro12.Goals > 6]
# 选取以字母G开头的球队数据
euro12euro[Team.str.startswith('G')]
# 选取前7列
euro12.iloc[: , 0:7]
1
2
3
4
5
6
7
8

out:
选取前七列.png

# 选取除了最后3列之外的全部列
euro12.iloc[: , :-3]
# 找到特定数据
euro12.loc[euro.Team.isin(['Enland','Italy','Russia']),['Team','Shooting Accuracy']]
1
2
3
4

out:
找到特定数据.png
总结:python中要想实现对数据的调用,需要一些函数,他们通常是有关数据的英文单词的缩写,重要的是牢记他们的用法与格式

# Apply函数

主题:探索1960 - 2014 美国犯罪数据

import numpy as np
import pandas as pd
path4 = '../input/pandas_exercise/exercise_data/US_Crime_Rates_1960_2014.csv'
crime = pd.read_csv(path4)
crime.head()
#  将Year的数据类型转换为 datetime64
crime.Year = pd.to_datetime(crime.Year,format='%Y')
1
2
3
4
5
6
7

out:
将Year的数据类型转化为datetime64.png

# 将列Year设置为数据框的索引
crime = crime.set_index('Year',drop = True)
1
2

out:
将列Year设置为数据框的索引.png

# 删除列
del crime['Total']
# 求最大值
crime.idxmax(0)
1
2
3
4

out:
求最大值.png

总结:pandas中set_index添加索引 DataFrame通过set_index方法,可以设置单索引和复合索引。 DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False) append添加新索引,drop为False,inplace为True时,索引将会还原为列

# 可视化

主题:探索泰坦尼克灾难数据

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

%matplotlib inline
path7 = '../input/pandas_exercise/exercise_data/train.csv'
titanic = pd.read_csv(path7)
titanic.head()
titanic = titanic.set_index('PassengerId').head()
# 绘制一个展示男女比例图的扇形图
males = (titanic ['Sex'] == 'male').sum()
females = (titanic ['Sex'] == 'female').sum()
proportions = [Males, Females]
plt.pie(
    proportions,
    lables = ['Males', 'Females'],
    shadow = False,
    colors = ['blue', 'red'],
    explode = (o.15, 0)
    startangle = 90,
    autopct = '%1.1%%f',
)
plt.axis = 'equal'
plt.title("Sex Proportion")
plt.tight_layout()
plt.show()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

out:
饼图.png

#  绘制一个展示船票Fare, 与乘客年龄和性别的散点图
lm = sns.lmplot(x = 'Age', y = 'Fare', data = titanic, hue = 'Sex', fit_reg=False)
lm.set(title = 'Fare x Age')
axes = lm.axes
axes[0,0].set_ylim(-5,)
axes[0,0].set_xlim(-5,85)
1
2
3
4
5
6

out:
散点图2.png

#  绘制一个展示船票价格的直方图
df = titanic.Fare.sort_values(ascending = False)
df
binsVal = np.arange(0,600,10)
binsVal
plt.hist(df, bins = binsVal)
plt.xlabel('Fare')
plt.ylabel('Frequency')
plt.title('Fare Payed Histrogram')
plt.show()
1
2
3
4
5
6
7
8
9
10

out:
直方图.png

# 本周python学习收获

在做python练习题的过程中,我发现python中连接字符串不能像Java一样简单地只利用“+”来连接,它共有七种方法:

  • 来自C语言的%方法:%号格式化字符串的方式继承自古老的C语言,%s是一个占位符,它仅代表一段字符串,并不是拼接的实际内容,实际的拼接内容在一个单独的%后面,放在一个元组里。类似的占位符还有:%d(代表一个整数)、%f(代表一个浮点数)、%x(代表一个浮点数)等。
  • format()拼接方式:这种方式使用花括号{}做占位符,在format方法中再转入实际的拼接值。
  • ()类似元组方式
  • 面向对象模板拼接
  • 常用的+方式(!!!有易错点)
  • join拼接方式
  • f-string方式
    关于这其中拼接方式,详情见下 python拼接字符串的七种方法

# 本周学习总结

现在虽然可以看懂基本的程序,但是在面对python练习题时还是会没有思路,不知道从何下手。后续准备在学习基础知识的过程中多多锻炼自己的思维,尽量自己想。解决办法目前就是多看别人的的程序,多自己想,

Last Updated: 11/21/2020, 5:35:34 PM
来发评论吧~
Powered By Valine
v1.4.14