第三十八篇pandas模块(代码片段)

itboy-newking itboy-newking     2022-12-20     704

关键词:

pandas

基于numpy模块,用于处理文本或表格数据,支持文件存取操作,支持数据库

import pandas as pd

import numpy as np

Series

只能放一维数组

print(pd.Series([1,2,3,4,5]))
'''
0    1
1    2
2    3
3    4
4    5
dtype: int32
'''
print(pd.Series(np.array([1,2,3,4,5])))
'''
0    1
1    2
2    3
3    4
4    5
dtype: int32
'''
print(pd.Series(np.array([1,2,3,4,5]),dtype='int64'))
'''
0    1
1    2
2    3
3    4
4    5
dtype: int64
'''

pd.DataFrame

二维数组及以上使用,生成一个表格

 print(pd.DataFrame(np.array([[1,2,3,4],[5,6,7,8]])))
'''
   0  1  2  3
0  1  2  3  4
1  5  6  7  8
'''

pd.date_range()

生成一个时间索引的一维数组

dates = pd.date_range('2019-06',periods=30)
print(dates)
'''
DatetimeIndex(['2019-06-01', '2019-06-02', '2019-06-03', '2019-06-04',
               '2019-06-05', '2019-06-06', '2019-06-07', '2019-06-08',
               '2019-06-09', '2019-06-10', '2019-06-11', '2019-06-12',
               '2019-06-13', '2019-06-14', '2019-06-15', '2019-06-16',
               '2019-06-17', '2019-06-18', '2019-06-19', '2019-06-20',
               '2019-06-21', '2019-06-22', '2019-06-23', '2019-06-24',
               '2019-06-25', '2019-06-26', '2019-06-27', '2019-06-28',
               '2019-06-29', '2019-06-30'],
              dtype='datetime64[ns]', freq='D')
'''

# np.random.rand生成随机数(价格),利用pd.date_range生成日期索引
good_list = ['book','bike','drunk','huawei','car']
good_price = np.random.rand(7,5)
date = pd.date_range('2019-6-12',periods=7)
df = pd.DataFrame(good_price,index=date,columns=good_list)
print(df)
'''
                book      bike     drunk    huawei       car
2019-06-12  0.043552  0.111986  0.323475  0.930866  0.838791
2019-06-13  0.249247  0.138921  0.409256  0.182755  0.715179
2019-06-14  0.285038  0.355326  0.093277  0.187183  0.820155
2019-06-15  0.003262  0.372441  0.925479  0.988700  0.242206
2019-06-16  0.551080  0.560331  0.326195  0.944092  0.504605
2019-06-17  0.473796  0.596993  0.807937  0.616850  0.824657
2019-06-18  0.762190  0.491334  0.040981  0.204430  0.866449
'''

在生成的表格中查看各类数据

print(df.columns) # ['book','bike','drunk','huawei','car']
'''
dtype  查看数据类型
index  查看行序列或者索引
columns    查看各列的标签
values 查看数据框内的数据,也即不含表头索引的数据
describe   查看数据每一列的极值,均值,中位数,只可用于数值型数据
transpose  转置,也可用T来操作
sort_index 排序,可按行或列index排序输出
sort_values() 按数据值排序
'''

处理缺失数据

test_data = '''
0,1,2,3
5.1,,1.4,0.2
4.9,3.0,1.4,0.2
4.7,3.2,,0.2
7.0,3.2,4.7,1.4
6.4,3.2,4.5,1.5
6.9,3.1,4.9,
'''

导入StringIO

from io import StringIO
test_data = StringIO(test_data)   # office把数据读入内存

pd.read_csv 把第一行当作行索引,在第一列填充列索引

df = pd.read_csv(test_data)  # 添加行和列的索引,打印cheng表格格式
print(df)
'''
     0    1    2    3
0  5.1  NaN  1.4  0.2
1  4.9  3.0  1.4  0.2
2  4.7  3.2  NaN  0.2
3  7.0  3.2  4.7  1.4
4  6.4  3.2  4.5  1.5
5  6.9  3.1  4.9  NaN
'''

dropna 只要出现NaN(无效值)的行就删除

  • 以及该方法中的参数控制
 print(df.dropna())  默认是 df.dropna(axis=0)
'''
     0    1    2    3
1  4.9  3.0  1.4  0.2
3  7.0  3.2  4.7  1.4
4  6.4  3.2  4.5  1.5
'''

# axis参数
# dropna(axis=1)只要出现NaN(无效值)的列就删除
 print(df.dropna(axis=1))
'''
     0
0  5.1
1  4.9
2  4.7
3  7.0
4  6.4
5  6.9
'''

# thresh参数
# dropna中的thresh参数:保留具有thresh参数指定个数有效值的行,没有这么多有效数据的行就删除
print(df.dropna(thresh=3,axis=0))
'''
     0    1    2    3
0  5.1  NaN  1.4  0.2
1  4.9  3.0  1.4  0.2
2  4.7  3.2  NaN  0.2
3  7.0  3.2  4.7  1.4
4  6.4  3.2  4.5  1.5
5  6.9  3.1  4.9  NaN

'''
print(df.dropna(thresh=4,axis=0))
'''    
    0    1    2    3
1  4.9  3.0  1.4  0.2
3  7.0  3.2  4.7  1.4
4  6.4  3.2  4.5  1.5
'''
print(df.dropna(thresh=5,axis=0))
'''
Empty DataFrame
Columns: [0, 1, 2, 3]
Index: []
'''

# dropna中的subset参数
print(df.dropna(subset=['3']))
'''
     0    1    2    3
0  5.1  NaN  1.4  0.2
1  4.9  3.0  1.4  0.2
2  4.7  3.2  NaN  0.2
3  7.0  3.2  4.7  1.4
4  6.4  3.2  4.5  1.5
'''

# fillna参数
# 将NaN(无效值)都赋值为0
print(df.fillna(value=0))

合并数据

DataFrame 如果不输入index和column参数,则都默认从0开始

df1 = pd.DataFrame(np.zeros((3,4)))
print(df1)
'''
     0    1    2    3
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
'''
df2 = pd.DataFrame(np.ones((3,4)))
print(df2)
'''
     0    1    2    3
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
'''

pd.concat()

# pd.concat(,axis=0)垂直合并数组
print(pd.concat((df1,df2),axis=0))
'''
     0    1    2    3
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
'''

# pd.concat(,axis=1)   水平合并数组
print(pd.concat((df1,df2),axis=1))
'''
     0    1    2    3    0    1    2    3
0  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
1  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
'''

数据写入excel文件和读取excel文件

 df = pd.DataFrame(good_price,index=date,columns=good_list)
df.to_excel(r'C:\Users\联想\Desktop\d.xlsx')
df0 = pd.read_excel(r'C:\Users\联想\Desktop\d.xlsx',header=0,index_col=0)
print(df0)
'''
                book      bike     drunk    huawei       car
2019-06-12  0.322727  0.029768  0.826520  0.589433  0.347090
2019-06-13  0.428079  0.415530  0.809133  0.746058  0.931913
2019-06-14  0.333673  0.594986  0.346576  0.920752  0.225355
2019-06-15  0.712803  0.449877  0.551796  0.302778  0.782467
2019-06-16  0.004480  0.398669  0.296981  0.746109  0.534168
2019-06-17  0.615625  0.976240  0.780116  0.227414  0.666836
2019-06-18  0.161665  0.873286  0.490482  0.960265  0.967142
'''

按索引(或key)取值

1.df.loc[]

# df0.loc[] 里面放key
print(df0.loc['2019-06-12'])
'''
book      0.322727
bike      0.029768
drunk     0.826520
huawei    0.589433
car       0.347090
Name: 2019-06-12 00:00:00, dtype: float64
'''

2.df.iloc[]

# df0.iloc[]里面放索引值,类似于numpy模块中的二维数组的索引取值
print(df0.iloc[0,0])
'''
0.322727442903458
'''
# 可以用这种方法赋值
df0.iloc[0,:] = 0
print(df0)
'''
                book      bike     drunk    huawei       car
2019-06-12  0.000000  0.000000  0.000000  0.000000  0.000000
2019-06-13  0.428079  0.415530  0.809133  0.746058  0.931913
2019-06-14  0.333673  0.594986  0.346576  0.920752  0.225355
2019-06-15  0.712803  0.449877  0.551796  0.302778  0.782467
2019-06-16  0.004480  0.398669  0.296981  0.746109  0.534168
2019-06-17  0.615625  0.976240  0.780116  0.227414  0.666836
2019-06-18  0.161665  0.873286  0.490482  0.960265  0.967142
'''

第三十八篇vue(代码片段)

概述Vue在大多数常见场景下性能都是很优秀的,通常不需要手动优化。然而,总会有一些具有挑战性的场景需要进行针对性的微调。在本节中,我们将讨论用Vue开发的应用在性能方面该注意些什么首先,让我们区分一下web应用性... 查看详情

第三十八次发博不知道用什么标题好(代码片段)

1#include<stdio.h>2#include<stdlib.h>3typedefstructnode4intdata;5structnode*next;6Slist;7Slist*Creatlist(Slist*L,inta[],intn)89Slist*s;10inti;11L=(Slist*)malloc(sizeof(Slist));12L->n 查看详情

《剑指offer》第三十八题(字符串的排列)(代码片段)

//面试题38:字符串的排列//题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,//则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。#include<iostream>voidPermutation(char*pStr,ch... 查看详情

第十八篇商城系统-订单中心设计解决方案(代码片段)

订单模块一、资源整合  我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径。在网关中设置对应的路由即可。二、整合SpringSession  结合官网,导入对... 查看详情

一起talkandroid吧(第三百三十八回:android中的okhttp一)(代码片段)

各位看官们,大家好,上一回中咱们说的是Android中Volley的例子,这一回中咱们说的例子是Android中的OkHttp。闲话休提,言归正转。让我们一起TalkAndroid吧!看官们,我们在本章回中介绍另外一种HTTP库:OkHttp。... 查看详情

android项目必备(三十八)-->app消息推送(代码片段)

...实现方式1.C2DM2.轮询3.SMS信令推送4.MQTT协议5.XMPP协议6.使用第三方平台Android中MQTT的使用1.集成2.具体代码3.项目地址前言今天来讲讲推送这件小事,事虽小,要做好却不容易。推送难,难于上青天。我们在讨论Android手机... 查看详情

第三十六篇hashlib模块hmac模块和logging模块(代码片段)

目录第三十七篇hashlib模块、hmac模块和logging模块一、hashlib模块1.hash是什么2.撞库破解hash算法加密二、hmac模块三、logging模块1.日志的五个级别2.V33.日志配置文件4.总结第三十七篇hashlib模块、hmac模块和logging模块一、hashlib模块1.hash... 查看详情

2018-08-24第三十六课(代码片段)

第三十六课非关系统型数据库-mangodb目录二十四mongodb介绍二十五mongodb安装二十六连接mongodb二十七mongodb用户管理二十八mongodb创建集合、数据管理二十九php的mongodb扩展三十php的mongo扩展三十一mongodb副本集介绍三十二mongodb副本集搭... 查看详情

全国计算机等级考试二级python(2021年9月)备考笔记第十四天(代码片段)

文章目录Python二级等考(第三季)精品题5单项选择题第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题第十四题第十五题第十六题第十七题第十八题第十九题第二十题第二十一题第二十... 查看详情

全国计算机等级考试二级python(2021年9月)备考笔记第十二天(代码片段)

文章目录Python二级等考(第三季)精品题3单项选择题第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题第十四题第十五题第十六题第十七题第十八题第十九题第二十题第二十一题第二十... 查看详情

第三十九篇matplotlib模块(代码片段)

matplotlib模块绘图库,可以创建常用的统计图(条形图、箱型图、折线图、散点图和直方图)bar()条形图#由于该模块不识别中文,所以我们需要导入一个中文简体字文件importmatplotlib.pyplotaspltfrommatplotlib.font_managerimportFontPropertiesfont=... 查看详情

wpf学习第三十八章行为(代码片段)

原文:【WPF学习】第三十八章行为  样式提供了重用一组属性设置的实用方法。它们为帮助构建一致的、组织良好的界面迈出了重要的第一步——但是它们也是有许多限制。  问题是在典型的应用程序中,属性设置仅是用户... 查看详情

mysql实战第三十八讲-都说innodb好,那还要不要使用memory引擎?(代码片段)

我在上一篇文章末尾留给你的问题是:两个groupby语句都用了orderbynull,为什么使用内存临时表得到的语句结果里,0这个值在最后一行;而使用磁盘临时表得到的结果里,0这个值在第一行?今天我们就来看... 查看详情

mysql实战第三十八讲-都说innodb好,那还要不要使用memory引擎?(代码片段)

我在上一篇文章末尾留给你的问题是:两个groupby语句都用了orderbynull,为什么使用内存临时表得到的语句结果里,0这个值在最后一行;而使用磁盘临时表得到的结果里,0这个值在第一行?今天我们就来看... 查看详情

2018-08-22第三十五课(代码片段)

第三十五课非关系型数据库-redis目录九、redis介绍十、redis安装十一、redis持久化十二、redis数据类型十三、redis常用操作十四、redis操作键值十五、redis安全设置十六、redis慢查询日志十七、php安装redis扩展十八、redis存储session十九... 查看详情

-考研第三十八周总结-

-考研第三十八周总结-【本周完成】✅数学:李林第3、4、5套卷;17、18年数学;英语;17年卷子、2016完型,12年大小作文专业课:17年卷子;书本到排序;一些代码题政治:肖八三、四、五选择... 查看详情

2018-07-30第三十二课(代码片段)

第三十二次课shell编程(二)目录十五、shell中的函数十六、shell中的数组十七、告警系统需求分析十八、告警系统主脚本十九、告警系统配置文件二十、告警系统监控项目二十一、告警系统邮件引擎二十二、运行告警系统十五、... 查看详情

第三十八天

文档流<!DOCTYPEhtml><html><head> <metacharset="UTF-8"> <title>文档流</title> <styletype="text/css">  .box   width:200px;&nb 查看详情