当从外部的数据源中抽取出相应的数据,并将数据存入文件或数据库中之后,接下来就是将数据转换为pandas库可以进行操作的数据结构对象(只有转换,才能使用pandas库提供的各种操作来对数据进行分析)。
ok,因为需要转换为pandas中可以操作的数据结构,所以需要先了解pandas的两个核心数据结构:Series和DataFrame。
一:Serise
Serise用来表示一维数据结构,由两个相互关联的一维数组组成的(主数组和Index数组),主数组中的数据(表示标签对应的元素)是任意类型的,而Index数组中的数据(表示标签)不是任意类型都可以。、
Serise定义:
>>> import pandas as pd
>>> s=pd.Series([1,2,3,4])
>>> s
0 1
1 2
2 3
3 4
dtype: int64
>>> s1=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
>>> s1
a 1
b 2
c 3
d 4
e 5
dtype: int64
>>> s1.values
array([1, 2, 3, 4, 5], dtype=int64)
>>> s1.index
Index(['a', 'b', 'c', 'd', 'e'], dtype='object'
>>> p=pandas.Series([4,5,6,6])
>>> pandas.Series(p)
0 4
1 5
2 6
3 6
dtype: int64
>>> dic={'a':1,'b':2,'c':3}
>>> pandas.Series(dic)
a 1
b 2
c 3
dtype: int64
二:DataFrame
DataFrame是用来表示二维数据结构(如二维表),由一个类似于Series的标签的一维数组和一个二维数组(包含了一系列列标签和列标签关联的一列数据)。
还可以认为DataFrame是一个由多个Series组成的字典(键为列标签名,值为每一列数据组成的列表)。
DataFrame定义:
>>> data={'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12]}
>>> pd.DataFrame(data)
a b c
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
>>> pd.DataFrame(data,columns=['a','c'])
a c
0 1 9
1 2 10
2 3 11
3 4 12
>>> pd.DataFrame(data,index=['m','n','o','p'])
a b c
m 1 5 9
n 2 6 10
o 3 7 11
p 4 8 12
>>> data={'a':[1,2,3,4],'b':[5,6,7,8],'c':[9,10,11,12]}
>>> pd.DataFrame(data)
a b c
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
>>> se=pd.Series([3,3,3,3])
>>> sa=pd.DataFrame(data)
>>> sa['kkk']=se
>>> sa
a b c kkk
0 1 5 9 3
1 2 6 10 3
2 3 7 11 3
3 4 8 12 3
>>> nn={'a':{'a1':1,'a2':2},'b':{'a1':3,'a2':4,'a3':5},'c':{'a2':7,'a4':9}}
>>> pd.DataFrame(nn)
a b c
a1 1.0 3.0 NaN
a2 2.0 4.0 7.0
a3 NaN 5.0 NaN
a4 NaN NaN 9.0
三:数据加载
文本文件加载:一般文本文件是txt后缀的。(csv文件:文件的每一行元素都是由逗号分隔的;而txt文件一般由空格或制表符分隔)
csv文件的数据是列表元素,位于不同列的元素用逗号隔开。
import pandas as pd
#读取csv文件
b=pd.read_csv('csv1.csv',encoding='gbk',names=['1','b','c','d'])
print(b)
#读取txt文件
c=pd.read_table('txt1.txt',sep=',')
print(c)
import pandas as pd
#将DataFrame数据写入csv文件中
data={'a':[1,2,3,4],'b':[4,5,5,6],'c':[7,8,9,0]}
da=pd.DataFrame(data)
da.to_csv('csv2.csv')
HTML文件加载:
to_html()方法:将DataFrame的内部结构转化为嵌在html表格的<tr>、<th>、<td>。
import pandas as pd
#将DataFrame数据写入html文件中
data={'a':[1,2,3,4],'b':[4,5,5,6],'c':[7,8,9,0]}
da=pd.DataFrame(data)
print(da.to_html())
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>a</th>
<th>b</th>
<th>c</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>1</td>
<td>4</td>
<td>7</td>
</tr>
<tr>
<th>1</th>
<td>2</td>
<td>5</td>
<td>8</td>
</tr>
<tr>
<th>2</th>
<td>3</td>
<td>5</td>
<td>9</td>
</tr>
<tr>
<th>3</th>
<td>4</td>
<td>6</td>
<td>0</td>
</tr>
</tbody>
</table>
read_html()方法:读取html的表格,并转化为DataFrame数据结构。
import pandas as pd
import html5lib as ht
pp=pd.read_html('https://blog.youkuaiyun.com/wei8887wei/article/details/14228769')
print(type(pp))
print(pp[0])
XML文件加载:XML文件是一种数据存储格式,pandas库中没有处理XML的工具,但是lxml库可以处理XML文件。
Microsoft Excel文件加载:文件是excel表的形式(用以存放列表形式的数据)。
read_excel()方法:读取excel 2003(.xls)和excel 2007(.xlsx)两种类型文件,变成DataFrame数据结构。
import xlwt
import pandas as pd
a=pd.read_excel('ex2.xls')
print(a)
to_excel()方法:将DataFrame转化为excel文件
import xlwt
import pandas as pd
DATA={'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]}
pd1=pd.DataFrame(DATA)
pd1.to_excel('ex2.xls')
JSON文件加载:JSON文件是一种数据存储格式,使用类似键值对的方式存储数据。
read_json()方法:读取json文件并转化为DataFrame数据结构。
import pandas as pd
DATA={'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]}
pd1=pd.DataFrame(DATA)
pd1.to_json('json1.json')
to_json()方法:将DataFrame转化为json文件。
import xlwt
import pandas as pd
a=pd.read_json('json1.json')
print(a)
HDF5文件加载:
数据库读取:
SQLite:
from sqlalchemy import create_engine
import sqlite3
import pandas as pd
#连接sqlite数据库
engine=create_engine('sqlite:///foo.db')
DATA={'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]}
pd=pd.DataFrame(DATA)
#将DataFrame转换为数据库表test
pd.to_sql('test',engine)
#将数据库表转换为DataFrame
pd.read_sql('test',engine)
MongoDB:
import json
import pymongo
import pandas as pd
#连接mongodb数据库
mon=pymongo.MongoClient('localhost',27017)
db=mon.mydatabase
#创建集合
collection=mon.mycollection
#创建DataFrame
DATA={'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]}
pd1=pd.DataFrame(DATA)
#将DataFrame转化为json对象
recode=json.loads(pd1.T.to_json()).values()
#存入数据库中
collection.mydocument.insert(recode)
#从数据库读取出表,变成DataFrame
cc=collection['mydocument'].find()
dataframe=(list(cc))
print(dataframe)
MYSQL: