Python数据分析之数据加载

这篇博客介绍了Python数据分析中如何使用pandas库加载不同类型的数据文件,包括文本文件(如csv和txt)、HTML文件、XML文件、Excel文件、JSON文件以及HDF5文件。此外,还提及了数据结构中的Series和DataFrame,强调它们在数据分析中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  当从外部的数据源中抽取出相应的数据,并将数据存入文件或数据库中之后,接下来就是将数据转换为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:








  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值