常用的数据分析文件格式:
- 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自动创建的
数据结构:
- Series,类似于一维数组对象。
- 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类型
- 类型转换 :json->csv
- 编码操作:json.dumps()
- 编码注意: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方式:
- 交叉连接(cross join)
- 内连接(inner join)
- 外连接(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