import pandas as pd
import numpy as np
数据的读取
读取csv文件
data = pd.read_csv('student.csv')
data.head()
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1.0 | 小明 | 1.0 | 7.0 |
1 | 2.0 | 小华 | 1.0 | 6.0 |
2 | 3.0 | 小红 | 2.0 | 6.0 |
3 | 4.0 | 小丽 | 3.0 | 8.0 |
4 | 5.0 | 无名氏 | 2.0 | 99.0 |
忽略表头
data = pd.read_csv('student.csv',header=None)
data.head()
| 0 | 1 | 2 | 3 |
---|
0 | 学号 | 姓名 | 班级 | 年龄 |
1 | 001 | 小明 | 1 | 7 |
2 | 002 | 小华 | 1 | 6 |
3 | 003 | 小红 | 2 | 6 |
4 | 004 | 小丽 | 3 | 8 |
读取excel文件
data = pd.read_excel('test.xlsx')
data.head()
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1 | 小明 | 1 | 7 |
1 | 2 | 小华 | 1 | 6 |
2 | 3 | 小红 | 2 | 6 |
3 | 4 | 小丽 | 3 | 8 |
读取指定分隔符的文件
data = pd.read_table('student.csv',sep=',')
data.head()
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1.0 | 小明 | 1.0 | 7.0 |
1 | 2.0 | 小华 | 1.0 | 6.0 |
2 | 3.0 | 小红 | 2.0 | 6.0 |
3 | 4.0 | 小丽 | 3.0 | 8.0 |
4 | 5.0 | 无名氏 | 2.0 | 99.0 |
跳过某些行导入
data = pd.read_csv('student.csv',skiprows=[1,2])
data.head()
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 3.0 | 小红 | 2.0 | 6.0 |
1 | 4.0 | 小丽 | 3.0 | 8.0 |
2 | 5.0 | 无名氏 | 2.0 | 99.0 |
3 | NaN | NaN | NaN | NaN |
4 | 7.0 | 曹操 | 0.0 | 100.0 |
设置控制显示
data = pd.read_table('student.csv',sep=',',na_values=['NULL'])
data
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1.0 | 小明 | 1.0 | 7.0 |
1 | 2.0 | 小华 | 1.0 | 6.0 |
2 | 3.0 | 小红 | 2.0 | 6.0 |
3 | 4.0 | 小丽 | 3.0 | 8.0 |
4 | 5.0 | 无名氏 | 2.0 | 99.0 |
5 | NaN | NaN | NaN | NaN |
6 | 7.0 | 曹操 | 0.0 | 100.0 |
分块读取文件
pd.options.display.max_rows = 5
data = pd.read_csv('student.csv',nrows=5)
data
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1 | 小明 | 1 | 7 |
... | ... | ... | ... | ... |
4 | 5 | 无名氏 | 2 | 99 |
5 rows × 4 columns
chunker = pd.read_csv('student.csv',chunksize=2)
chunker
<pandas.io.parsers.TextFileReader at 0x13f6fac3a88>
tot = pd.Series([])
for piece in chunker:
tot = tot.add(piece['姓名'].value_counts(),fill_value=0)
tot = tot.sort_values(ascending=False)
tot
曹操 1.0
...
小丽 1.0
Length: 6, dtype: float64
读取txt文件
with open('student.txt','r',encoding='utf-8') as f:
line = f.readline()
for i in f:
print(i)
001,小明,1,7
002,小华,1,6
003,小红,2,6
004,小丽,3,8
005,无名氏,2,99
,,,
007,曹操,0,100
读取hdf5文件
frame = pd.DataFrame({'a':np.random.randn(100)})
store = pd.HDFStore('data.h5')
store['obj1'] = frame
store['obj1_col'] = frame['a']
store['obj1']
| a |
---|
0 | -0.362267 |
1 | 0.581715 |
... | ... |
98 | -0.873690 |
99 | -0.164074 |
100 rows × 1 columns
读取MySQL数据
import pymysql
conn = pymysql.connect(host='localhost',user='root',password='19961021',db='student',charset='utf8')
data_sql=pd.read_sql("select * from student",conn)
data_sql
| 学号 | 姓名 | 年龄 | 班级 |
---|
0 | 001 | 小明 | 7 | 1 |
1 | 002 | 小红 | 6 | 2 |
2 | 003 | 小华 | 8 | 3 |
3 | 004 | 小丽 | 10 | 5 |
存储数据
data
| 学号 | 姓名 | 班级 | 年龄 |
---|
0 | 1 | 小明 | 1 | 7 |
1 | 2 | 小华 | 1 | 6 |
2 | 3 | 小红 | 2 | 6 |
3 | 4 | 小丽 | 3 | 8 |
4 | 5 | 无名氏 | 2 | 99 |
存储到csv
data.to_csv('student-1.csv')
存储到数据库
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('root', '19961021', '127.0.0.1:3306', 'student','UTF8MB4'))
con = engine.connect()
data.to_sql(
name='student-1',
con=con,
if_exists='append',
index=False,
)