人在江湖~

做一个快乐学习的小透明~~~

导航

Python系列(3)——Pandas数据库读取数据

Pandas主要先读取表格类型的数据,然后进行分析。

 

import pandas as pd
# 由于是用pandas模块操作数据,因此不用在路径前加open,否则就是python直接打开文件,可能还会打不开出错
# file_path_excel = open('E:\\学习\\Python\\Pandas入及学习-据分析\\bank.xls')
# 文件所在的位置,文件路\\,或是反方向单杠/, 或在文件路前加一r即可直接使用原路\即:r'\'
# 'E:\\学习\\bank.csv'  'E:/学习/bank.csv'  r'E:\学习\bank.csv' 都是正确的

 

1.读取纯文本文件  --使用pandas.read_csv
1.1 读取csv,使用默认的标题行、逗号分隔符--有时csv文本中的数据编码不兼容,打开时出错,read_csv(..,encoding=换一种更通用更高级的编码如gbkgb18030等即可)

1 file_path_csv = 'E:\\学习\\Python\\Pandas模块的导入及学习-数据分析\\bank.csv'  # 文件路径为\\或/或r'\'都可
2 bank_csv = pd.read_csv(file_path_csv)  # 使用pandas.read_csv读取文件
3 print(bank_csv.head())   # 查看前几行数据,默认显示前5行数据
4 print(bank_csv.shape)   # 查看数据的形状,返回(行数,列数)
5 print(bank_csv.dtypes)  # 查看每列的数据类型
View Code

1.2 读取txt文件,自己制定分隔符

1 file_path_txt = 'E:\\学习\\Python\\Pandas模块的导入及学习-数据分析\\bank.txt'
2 bank_txt = pd.read_csv(file_path_txt, sep=' ', header=None, names=['name', 'password', 'balance'])
3 # sep=' '空格为自己设定的分隔符,,默认是','号;header=None 如果不将数据集的第一行作为表头,需要设置header=None,
4 # header指定行数用来作为列名,数据开始行数,如果需要第一行做表头 header=0 即可;names后面是自己加入指定的标题
5 # bank_txt = pd.read_csv(file_path_txt, sep=' ', header=0)
6 print(bank_txt)
View Code

 2.读取excel文件--使用pandas.read_excel

1 bank_excel = pd.read_excel('E:/学习/Python/Pandas模块的导入及学习-数据分析/bank.xls', sheet_name='user')
2 print(bank_excel)
View Code

 

2.1 读取同一文件下的多个sheet数据--使用pandas.ExcelFile('文件名')

1 excel_reader = pd.ExcelFile(r'C:\Users\Administrator\Desktop\test.xls')  # 指定文件
2 """
3 sheet_names = excel_reader.sheet_names   # 读取文件的所有表单名,得到列表
4 # 读取表单的内容,i是表单名的索引,等价于pd.read_excel('文件', sheet_name=sheet_names[i])
5 df_data = excel_reader.parse(sheet_name=sheet_names[i])
6 """
7 df1 = excel_reader.parse(sheet_name='1')  # 读取表单内容
8 df2 = excel_reader.parse(sheet_name='2')
View Code

2.2 对excel的一些简单操作

 1 print(bank_excel.shape)  # 读取行列
 2 n_rows = bank_excel.shape[0]
 3 print(n_rows)  # 读取最大行
 4 n_columns = bank_excel.columns.size
 5 print(n_columns)  # 读取最大列
 6 print(bank_excel.iloc[0, 1])  # 读取指定行列内容   列和行的序号都从0开始,且iloc索引不含标题行
 7 # iloc与loc的区别在于,iloc[行号,列号]而不是loc[行名,列名]
 8 
 9 for i in range(n_rows):
10     for j in range(n_columns):
11         print(bank_excel.iloc[i, j])   # 遍历表格
12 
13 print(bank_excel.iloc[0].values)    # iloc索引 返回列表除标题外的第一行数据
14 print(bank_excel.index.values)  # 获取行号并打印输出
15 print(bank_excel.columns.values)  # 获取列名并打印输出
16 
17 r = bank_excel.loc[bank_excel['name'] == 'tom']   # 输出筛选的数据内容
18 e = bank_excel.loc[bank_excel['balance'] >= 1000] 
19 s = bank_excel.loc[bank_excel['name'].str.contains('o')]   # 输出含有字符o的数据
20 # 组合条件用&符号合并,每个条件判断都得带括号
21 m = bank_excel.loc[(bank_excel['balance'] >= 1000) & (bank_excel['name'] == 'tom')] 
22 u = bank_excel.loc[:, ['name', 'balance']]   # 输出指定列的所有内容
23 l = bank_excel.loc[0:2, ['name', 'balance']]   # 输出指定列的0-2行数据内容
24 t = bank_excel.loc[0:2, ]   # 输出指定行0-2行数据
25 print(r)
26 print(s)
View Code

3.读取MySQL数据库

1 import pymysql
2 connect_mysql = pymysql.connect(host='S12345678', user='sa', password='*******',database='test1', charset='utf8')
3 # pymysql.connect(host=“你的数据库地址--一般是计算机名”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
4 mysql_page = pd.read_sql('select * from [test1].[dbo].[course]', con=connect_mysql)
5 print(mysql_page)
View Code

 

posted on 2020-07-16 10:37  人在江湖~  阅读(1099)  评论(0编辑  收藏  举报