c++控制台应用每一列数据如何对齐_Python数据分析(1)-pandas versus excel

95d32b8ce51049740cb784751dc7e626.png

关于Excel的一些基本操作,对应到pandas里应该如何实现呢?

d8a727f24e4bddb5286f57a6cbec856f.png

我的python数据分析环境是AnacondaJupyter notebook。

Part 1 excel的创建和读取

1、创建

#导入pandas数据包

打开文件路径,可找到创建的excel以及内容

d7c9fa576913672ead3c072efc5e7237.png

2、读取

#查看行列数

因为编程语言是从第0行(也就是excel的第一行)开始的,默认第0行当做header。所以,如果excel的header是在第二行的话,读取excel的时候,用下面的代码:

df

如果表格中没有header(ID、Nmame)的话

#第一种读取方法

查看列名时。会发现'ID'这一列从列名中消失,ID变成了索引(在DataFrame中index和columns是区分开的)

3、行、列、单元格

pandas的数组有Series和DataFrame

用序列Series来创建行or列。

  • Series的属性:.index,.values, .name,.index.name
  • dataframe 的属性:.columns, .index,.values

series和python里的字典{keys:values}数据结构很像,会把字典的keys转化为序列的index,values转换为序列的data,如何将dictionary转换成series的方法:

d

直接创建序列,series除了一组数据外还包括一组索引:

s1

如何将series创建行和列

  • 若以List形式加入DataFrame, 則該Series是被當作DataFrame的row加入;
  • 若以Dict形式加入DataFrame, 則該Series是被當作DataFrame的column加入。
s1

index,具有对齐的作用

s1

4、自动填充功能--数据区域读取和填充数字

这里的excel有空行和空列,如何读取呢?

bd7cba199561efc89392531caca394a6.png
import 

abd6aa6f3b8b40374b070d7bce5d2330.png

使用read_excel的两个参数:skiprowsusecols

import 

088418748f82bd3d7f065009addba7d0.png

数据框中的每一列是series

print

Series中有一个函数是at,填充列【ID】

#在ID列的第一行填充一个数值

a94f63068a2597aeb028dc7fbfce8a7d.png

aa424a867e5bae9857427adabec3bf0f.png
#从上面的代码可看出dtype的类型改为int出错,先转为换为str

358a4d52598e5b5bab63124fceb868b9.png

查看数据类型

Books

为了方便,这里把数据类型都改为字符串

import 

填充【InStore】列

for 

476b97b31eb1ea14fba1682d91c28cb4.png

填充列【Date】

from 

29dbb67f533445a009b9ce390df7d16f.png

5、填充日期序列(填数值,填文本,填日期)

给日期列逐一加一天

from 

16904b9314ab52ed89c604ca614dc5b1.png

给年份逐一加1,timedeltah只能得出天以及天以下的时间。

from 

给月份逐一加1(但只有12个月)

def 

b2f6f39b0fbf2ee9733bda39b03f8e52.png

这里将填充结果保存在原excel中

#这里不生成索引

7f7f3ed4fe759684c0952e57f30b3dfc.png

上面的填充都是直接先找到series的某一列再去改,也可以直接使用dataframe的at函数,如:

start

part 2 只需一行代码

1、函数填充、计算列

1.1计算Price的值

import 

33452bdbef12f1f2d8b5c0b418a4fe67.png
books

得到Price这一列的值

5652e72aa85c0c60eb3634fda10cce8e.png

1.2[ListPrice]列的值+2

#方法1:

方法2 :运用到Series的apply函数

def 

方法3:lambda函数

def 

2、排序、多重排序

2.1按Price价格排序

#读取文件,设置列[ID]为索引

e493d5f7e123b66eb085a2778ac17629.png
product

c79a7aa581b5adc0b489e499c3f1e550.png

2.2 多重排序:先按Worthy排序再按Price排序

product

3、数据筛选、过滤

#帅选出年龄在18-30岁的学生

8cc53d80e2972f396c2c2764b4450709.png

ps:在python中,选择【Age】这一列的方法,除了student['Age'],还可以使用student.Age

student

还可以用更高级的函数lambda函数,表达式为:lambda 函数名:函数体

#筛选出年龄在18-30岁且分数在85-100的学生

part 3 数据可视化

1、柱状图:bar

pandas的制图功能是构建在matplotlib(文件夹,packge)库上的,这里要使用的是他下班的pyplot模块。

import 

603a142c34c971299b15d9de7348a186.png

图形的属性设置

#图形形状、颜色、标题

d27b7d66ea86c6e643471b741eec7e22.png

ps:pandas作图没有matplotlib那么灵活,接下来就学习如何使用matplotlib绘图

import 

0c76e1991603b11e6e897ac82e6a365f.png

2、分组柱状图(深度优化)

d017df345bbf230219c6857b08bb2d65.png
student

4db7e8b7e77922f1b3292f4f7339f4c9.png

这里旋转45°后的对其看起来挺奇怪的,可以给一个参数“HA”[Horizontal alignment must be one of ('center', 'right', 'left')]

890ec700211492e1755bae4895654b36.png
student

2f55fde8541286645215dacf654d49d7.png

3、叠加柱状图和水平柱状图

3.1叠加柱状图

import 

bcc2c24dc2d52a69098d602323779840.png

可以加上plt.tight_layout()的效果:

cfb0dc95b73ce607b3649e664eb35b44.png

排序:总量由高到低

df

ca7ef15653f1d864de456ea0b3de2371.png

3.2 水平柱状图

只需把df.plot.bar改为df.plot.barh(),ascending=False改为ascending=True就行了,horizontal(水平线的意思)

import 

4fa43ebe284d64e305c8f896b1de16d6.png

4、饼图

import 

5af80a7977c5a0438e33a3a293c1ac62.png

此时是逆时针的饼图,如何制作成顺时针呢?

2775763e01ab29d26f38ee5209b0d36e.png

5、折线区域图和叠加区域图

5.1折线区域图

excel制图如下所示

8ac7dc93d17d728b0ae6182078328767.png
weeks

b89a99b8a9490ec6931803df158fea3c.png

5.2 叠加区域图

weeks

17da8823c653281f838f152837d6857a.png

5.3 可看出叠加柱状图和叠加区域图的区别:

weeks

3332a0faa90ed1c46f4954c5522d75f7.png

6、散点图和直方图

6.1 散点图

homes

f5b0dd1214f7f59e5e3563c5f6a3b95a.png

6.2直方图

看西雅图地区面积的房价分布情况

homes

e3b842357c14532ddcad7d384bb4d3f1.png

7、密度图(density)

homes

万分之四到万分之五之间的概率能买到一个1250尺的房子。

17dc1bf67455bbc85a48b2f4b6f1393f.png

以上展示了pandas和matplotlib的绘图功能,包括:

  • 柱状图:bar(分组柱状图、叠加柱状图、水平柱状图)
  • 饼图:pie
  • 折线图:plot(折线区域图、叠加区域图)
  • 散点图:scatter
  • 直方图:hist(histogram)
  • 密度图:kde

对于图形属性应多实践才能记得牢靠!!!

d8a727f24e4bddb5286f57a6cbec856f.png

附上以上内容的学习视频,感兴趣的同学可以戳下面的链接。

Python数据分析-pandas玩转Excel - 网易云课堂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值