【Python数据分析学习笔记Day2】(二)数据采集与操作

常用的数据分析文件格式:

  • txt
  • csv
  • json
  • xml
  • xls,xlsx
  • HDF

常用格式的本地数据读写:

txt:由字符串组成,每行由EOL(End Of Line)字符隔开,\n

打开文件,注意编码

file_obj=open(filename,access_mode)

access_mode:’r’,’w’

读操作:

file_obj.read()读取整个文件内容

file_obj.readline()逐行读取

file_obj.readlines()返回列表,列表中的每个元素都是行内容

写操作:

file_obj.write()将内容写入文件

file_obj.writelines()将字符串列表内容逐行写入文件

关闭文件:

file_obj.close()

with语句

。包括了异常处理,自动调用文件关闭操作,推荐使用

。适用于对资源进行访问的场合,确保无论使用过程中是否发生异常都会执行“清理”操作,如文件关闭,线程的自动获取与释放等。

with open(filename) as f_obj:

     #执行相关操作

 

CSV(Comma-Separated Values)

以纯文本形式存储的表格数据(以逗号作为分隔符),通常第一行为列名

文件操作:

  • numpy的np.loadtxt(),较复杂
  • 利用pandas处理,快捷方便

读操作:

df_obj=pd.read_csv(),返回DataFrame类型的数据

写操作:

df_obj.to_csv()

 

Pandas:

基于Numpy构建,索引在左,数值在右。索引是pandas自动创建的

数据结构:

  1. Series,类似于一维数组对象。
  2. DataFrame,表格类型数据结构,每列可以是不同的数据类型,可表示二维或更高维的数据。

Pandas学习(数据读取、索引、数据预处理、自定义函数)

https://blog.csdn.net/qq_41251963/article/details/103904044

 

JSON(JavaScript Object Notation)

  • 轻量级的数据交换格式
  • 语法规则:数据是键值对,由逗号分隔,{}保存对象,如{key1:val1,key2:val2},[]保存数组,如[val1,val2,…,valn]

读操作:

json.load(file_obj) 返回值是dict类型

  1. 类型转换 :json->csv
  2. 编码操作:json.dumps()
  3. 编码注意:ensure_ascii=False

 

XLS/XLSX(Excel文件)

常用的电子表格数据

文件操作:

利用pandas处理,快捷方便

读操作:

df_obj=pd.read_excel()返回DataFrame类型的数据

写操作:

df_obj.to_excel()

 

Python的数据库基本操作:

SQLite:

  • 关系型数据库管理系统
  • 嵌入式数据库,适用于嵌入式设备
  • SQLite不是C/S的数据库引擎
  • 集成在用户程序中
  • 实现大多数SQL标准

连接数据库:

conn=sqlite3.connect(db_name)

  • 如果db_name存在,读取数据库
  • 如果db_name不存在,新建数据库

获取游标;

conn.cursor()

一段私有的SQL工作区,用于暂时存放受SQL语句影响的数据。

CRUD操作:

      cursor.excute(sql_str)

     Cursor.excutemany(sql_str)批量操作

fetchone()

fetchall()

conn.commit(),提交操作

关闭连接:conn.close()

 

SQLite 基本操作:

1.连接数据库

import sqlite3

db_path = './files/test.sqlite'

conn = sqlite3.connect(db_path)

cur = conn.cursor()

conn.text_factory = str  # 处理中文

 2.获取基本信息

cur.execute('SELECT SQLITE_VERSION()')

print('SQLite版本:', str(cur.fetchone()[0]))

3.逐条插入数据

cur.execute("DROP TABLE IF EXISTS book")
cur.execute("CREATE TABLE book(id INT, name TEXT, price DOUBLE)")
cur.execute("INSERT INTO book VALUES(1,'肖秀荣考研书系列:肖秀荣(2017)考研政治命题人终极预测4套卷',14.40)")
cur.execute("INSERT INTO book VALUES(2,'法医秦明作品集:幸存者+清道夫+尸语者+无声的证词+第十一根手指(套装共5册) (两种封面随机发货)',100.00)")
cur.execute("INSERT INTO book VALUES(3,'活着本来单纯:丰子恺散文漫画精品集(收藏本)',30.90)")
cur.execute("INSERT INTO book VALUES(4,'自在独行:贾平凹的独行世界',26.80)")
cur.execute("INSERT INTO book VALUES(5,'当你的才华还撑不起你的梦想时',23.00)")
cur.execute("INSERT INTO book VALUES(6,'巨人的陨落(套装共3册)',84.90)")
cur.execute("INSERT INTO book VALUES(7,'孤独深处(收录雨果奖获奖作品《北京折叠》)',21.90)")
cur.execute("INSERT INTO book VALUES(8,'世界知名企业员工指定培训教材:所谓情商高,就是会说话',22.00)")

4.批量插入数据

books = (
    (9, '人间草木', 30.00),
    (10,'你的善良必须有点锋芒', 20.50),
    (11, '这么慢,那么美', 24.80),
    (12, '考拉小巫的英语学习日记:写给为梦想而奋斗的人(全新修订版)', 23.90)
)
cur.executemany("INSERT INTO book VALUES(?, ?, ?)", books)
conn.commit()

5.查找数据

cur.execute('SELECT * FROM book')
rows = cur.fetchall()

# 通过索引号访问
for row in rows:
print('序号: {}, 书名: {}, 价格: {}'.format(row[0], row[1], row[2]))


conn.row_factory = sqlite3.Row
cur = conn.cursor() 
cur.execute('SELECT * FROM book')
rows = cur.fetchall()

# 通过列名访问
for row in rows:
print('序号: {}, 书名: {}, 价格: {}'.format(row['id'], row['name'], row['price']))
conn.close()

数据库多表连接用法详解:

多表连接:查询记录时将多个记录连接(join)并返回结果

join方式:

  1. 交叉连接(cross join)
  2. 内连接(inner join)
  3. 外连接(outer join)

cross join:生成两张表的笛卡尔积,返回的记录数为两张表的记录数的乘积

inner join:生成两张表的交集,返回的记录数为两张表的交集记录数

outer join

  • left join(A,B),返回表A的所有记录,另外表B中匹配的记录值,没有匹配的记录返回null
  • right  join(A,B),返回表B的所有记录,另外表A中匹配的记录值,没有匹配的记录返回null

 

爬虫:

一些爬虫案例:

https://blog.csdn.net/qq_41251963/category_7929696.html

 

爬虫框架Scrapy基础:

python scrapy框架爬取豆瓣

https://blog.csdn.net/qq_41251963/article/details/82706781

 

Logistic回归:

逻辑回归的几个案例:

https://blog.csdn.net/qq_41251963/article/details/103943766

https://blog.csdn.net/qq_41251963/article/details/103945327

https://blog.csdn.net/qq_41251963/article/details/103978621

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐亦亦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值