pandas的数据结构
目录
2.2.2 根据从文件、mysql中读取创建dataframe
1.pandas介绍
python数据分析三剑客:numpy、pandas、Matplotlib
NumPy(Numerical Python):Python语言的一个扩展程序库,支持大量的维度数据与矩阵运算,针对数组提供大量的数学函数库 Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。 Matplotlib是一个python绘图包
pandas安装: 1、下载使用Python类库集成安装包:anaconda https://www.anaconda.com 当今最流行的Python数据分析发行版 已经安装了数据分析需要的几乎所有的类库
2、pip3 install pandas
本课程演示方式 使用jupyter Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 安装: pip3 install jupyter(需要python3.3或更高版本,或python2.7) 运行: jupyter notebook
########################################
2.pandas的数据结构
2.1 Series
Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一组与之相关的数据标签(即索引)组成。Seriers的交互式显示的字符串表示形式是索引在左边,值在右边。 类似一个有序的字典。
########################################
2.1 创建一个Series
>>> import pandas as pd
>>> s1 = pd.Series([1,'a',5.2,7])
>>> s1
0 1
1 a
2 5.2
3 7
dtype: object
获取索引
>>> s1.index
RangeIndex(start=0, stop=4, step=1)
获取数据
>>> s1.values
array([1, 'a', 5.2, 7], dtype=object)
########################################
2.1.1 创建一个具有标签索引的Series
>>> s2 = pd.Series([1,'a',5.2,7],index=['d','b','a','c'])
>>> s2.index
Index(['d', 'b', 'a', 'c'], dtype='object')
>>> s2.values
array([1, 'a', 5.2, 7], dtype=object)
根据标签索引查询数据
类似Python的字典dict
>>> s2 = pd.Series([1,'a',5.2,7],index=['d','b','a','c'])
>>> s2['d']
1
>>> s2['c']
7
>>> s2['a']
5.2
>>> type(s2['a'])
<class 'float'>
>>> s2[['b','a']]
b a
a 5.2
dtype: object
>>> type(s2[['b','a']])
<class 'pandas.core.series.Series'>
########################################
2.1.2 使用python字典创建 Series
>>> sdata={'a':35000,'b':72000,'c':16000,'d':5000}
>>> s3=pd.Series(sdata)
>>> s3
a 35000
b 72000
c 16000
d 5000
dtype: int64
########################################
2.2 DataFrame
DataFrame是一个表格型的数据结构
- 每列可以是不同的值类型(数值、字符串、布尔值等)
- 既有行索引index,也有列索引columns
- 可以被看做由Series组成的字典
########################################
2. 2.1 根据多个字典序列创建dataframe
>>> data={
... 'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
... 'year':[2000,2001,2002,2001,2002],
... 'pop':[1.5,1.7,3.6,2.4,2.9]
... }
>>> df = pd.DataFrame(data)
>>> df
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
# 查看列的类型
>>> df.dtypes
state object
year int64
pop float64
dtype: object
# 查看有哪些列
>>> df.columns
Index(['state', 'year', 'pop'], dtype='object')
# 查看行的索引
>>> df.index
RangeIndex(start=0, stop=5, step=1)
根据标签索引查询数据
>>> df[['state','year']]
state year
0 Ohio 2000
1 Ohio 2001
2 Ohio 2002
3 Nevada 2001
4 Nevada 2002
########################################
2.2.2 根据从文件、mysql中读取创建dataframe
读取csv、txt文件 --> read_csv()
读取xlsx文件 --> read_excel()
读取mysql数据库 --> read_sql()
从网页读取table -->read_html()
从csv文件读取
# 从csv文件里面读取
>>> fpath = "/lianxi/datas/read_test.csv"
>>> df = pd.read_csv(fpath)
>>> df
date prov isp pv uv
0 2020-04-26 hunan cmnet 2000 1000
1 2020-04-26 hunan cmnet 3000 1500
2 2020-04-26 hunan cmcc 4000 1000
3 2020-04-26 hubei ctc 2500 1000
4 2020-04-26 hubei cmcc 2000 1000
5 2020-04-26 hubei ctc 2100 1600
6 2020-04-27 hunan cmnet 4000 1700
7 2020-04-27 hunan cmnet 3200 1500
8 2020-04-27 hunan cmcc 2800 1600
9 2020-04-27 hubei ctc 2600 1400
10 2020-04-27 hubei cmcc 3800 1900
11 2020-04-27 hubei ctc 2400 1900
########################################
从网页拉取table数据
从网页拉取table数据需要先安装 lxml库
[root@localhost datas]# pip3 install lxml
>>> url = 'http://ranking.promisingedu.com/qs'
>>> df = pd.read_html(url)[0]
>>> df
Ranking University English Name ... Overall Score Free
0 1 Massachusetts Institute of Technology (MIT) ... 100.0 免费评估
1 2 牛津大学University of Oxford ... 99.5 免费评估
2 3 Stanford University ... 98.7 免费评估
3 3 剑桥大学University of Cambridge ... 98.7 免费评估
4 5 Harvard University ... 98.0 免费评估
.. ... ... ... ... ...
496 494 Dongguk University ... 24.1 免费评估
497 494 Iowa State University ... 24.1 免费评估
498 494 Sogang University ... 24.1 免费评估
499 494 University of Rome "Tor Vergata" ... 24.1 免费评估
500 494 York University ... 24.1 免费评估
[501 rows x 11 columns]
########################################
从数据库拉取
import pandas as pd
import pymysql
conn = pymysql.connect(
host='192.168.44.132',
user='sc',
password='123456',
database='sc',
charset='utf8'
)
# 从mysql读取数据
mysql_page = pd.read_sql("select * from userinfo", con=conn)
mysql_page
username userage
0 sc1 12
1 sc2 14
2 sc3 13
相关文章
- 使用Pandas groupby连接来自多行的字符串
- pandas 左右边界切割 用merge join和concat合并Pandas中的数据
- 【问题解决方案】查看Python安装了哪些库(pandas, matplotlib等等)
- [Python] Normalize the data with Pandas
- pandas拆分指定数量的excel
- Python之pandas:特征工程中数据类型(object/category/bool/int32/int64/float64)的简介、数据类型转换四大方法、案例应用之详细攻略
- Python之pandas-profiling:pandas-profiling库的简介、安装、使用方法之详细攻略
- pandas 将自己的文件写入csv
- 2w+字长文,一篇文章扫盲Python、NumPy 和 Pandas,建议收藏!
- 刷新了我的认知,Pandas 中的宝藏函数 transform() 真棒!
- Pandas_Alive!一款可以让数据舞动起来的可视化工具
- 【阶段二】Python数据分析Pandas工具使用01篇:Pandas工具介绍、Pandas工具安装、数据结构:Series数据结构与DataFrame数据结构
- pandas groupby 分组操作
- 数据分析工具Pandas基础——数据结构--Series
- 上手Pandas,带你玩转数据(3)-- pandas数据存入文件
- 【数据分析】Python 结构化数据分析工具 Pandas | Series 与 DataFrame | 读取CSV文件数据 |