Pandas学习1 --- 数据载入

import numpy as np
import pandas as pd

数据加载

首先,我们需要将收集的数据加载到内存中,才能进行进一步的操作。pandas提供了非常多的读取数据的函数,分别应用在各种数据源环境中,我们常用的函数为:

  • read_csv
  • read_table
  • read_sql
    q

1.1 加载csv数据

  • header 表标题,可以使用整形和或者整形列表来指定标题在哪一行,None是无标题,默认infer首行
  • sep 控制数据之间的分隔符号。read_csv方法,默认为逗号(,)
  • names 设置列标签(相当于df.columns)
  • index_col 可以指定有唯一标记的列来充当行标签
  • usecols 指定感兴趣的列
# 加载数据集, 返回DataFram类型
df = pd.read_csv('/home/geoffrey/文档/33.csv', header=0, sep=',', usecols=['v:0', 'Points:0', 'Points:1', 'Points:2'])
df.head(10)
v:0 Points:0 Points:1 Points:2
0 2.57150 1.23150 -0.86263 -0.40724
1 2.08420 1.15670 -0.90047 -0.34635
2 1.27970 0.76719 -0.93330 -0.26176
3 0.71951 0.63454 -0.91585 -0.22918
4 1.63080 0.81560 -0.93992 -0.20332
5 3.36400 1.50590 -0.98745 -0.19570
6 2.27160 0.82635 -0.89883 -0.19312
7 2.64630 0.96451 -0.85991 -0.18457
8 0.91226 0.68853 -0.83424 -0.18203
9 4.55390 1.46730 -0.82822 -0.17043

1.2 加载数据库数据

pd.read_sql(sql语句, 连接对象)

import sqlite3

# 创建连接,创建数据库
con = sqlite3.connect('test.db')
# SQL语句
sql = 'create table person(id int primary key, name varchar(100))'
con.execute(sql)

# 插入数据
sql = 'insert into person(name) values("Geoffrey")'
con.execute(sql)
con.commit()

# 查看数据
sql = 'select * from person'
pd.read_sql(sql, con)
id name
0 None Geoffrey

1.3 数据流处理

数据流.getvalue() # 注意,写入后指针在数据流的末尾,需要调整指针

from io import StringIO # 类文件对象(缓存区)

# 创建缓存区
sio = StringIO()

# 向缓存区写入数据
df.to_csv(sio)

# 读取数据
sio.getvalue()
',0,1,2
0,1,2,3.0
1,4,5,6.0
2,7,8,
'
# 调整指针到缓存区头部
sio.seek(0)
sio.read()
',0,1,2
0,1,2,3.0
1,4,5,6.0
2,7,8,
'

2. 写入数据

DataFrame与Series对象的to_csv方法:
该方法可以将数据写入:

  • 文件中
  • 数据流中
常用参数
  • sep 指定分隔符
  • header 是否写入标题行
  • na_rep 空值的表示
  • index 是否写入索引
  • index_label 索引字段的名称
  • columns 写入的字段
df = pd.DataFrame([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, np.nan] # 含有
])
df
0 1 2
0 1 2 3.0
1 4 5 6.0
2 7 8 NaN
df.to_csv('test.csv', sep=',', header=True, index=True, na_rep='空', columns=[0, 2])
pd.read_csv('test.csv')
Unnamed: 0 0 2
0 0 1 3.0
1 1 4 6.0
2 2 7
原文地址:https://www.cnblogs.com/geoffreyone/p/9924688.html