写在前面:刚开始自学python没多久,本来学习爬虫,因为作业的原因现在开始学习数据分析,基础很浅。下面的内容是摘自书本的笔记以及一些个人感悟和遇到的一些问题。有不对的地方大家一定提出来,谢谢。PS:使用pycharm
附上我看的书
trhm
第一章——Python基础
笔记:
-
print 语句中的语法 “{0:d}”.format(z) 。花括号( {} )是一个占位符,表示这里将要 传入 print 语句一个具体的值,这里就是变量 z 的值。 0 指向 format() 方法中的第一个参 数, 在这里, 只包含一个参数 z , 所以 0 就指向这个值;相反, 如果有多个参数, 0 就确 定地表示传入第一个参数。
冒号( : )用来分隔传入的值和它的格式。 d 表示这个值应该被格式化为整数,没有小数部 分。
为什么要使用.format,,用占位符得到用逗号分隔的变量的值,如果不用占位符要自己打逗号才会分开 -
几位小数:
print ("Output #7: {0:.3f}".format(8.3/2.7))
#.3f设定了打印的输出值应该有3位小数
- type函数:获得对象的类
- math模块中的函数:exp、log、sqrt,分别表示e的乘方、自然对数、平方根,需要导入才能使用
- 字符串:
- 多行的时候可以使用:
1.反斜杠 (容易出错)
2.3个单/双引号 - “+ * len",分别是拼接,重复拼接,计算长度
- split():拆分成列表,默认使用空格拆分。
- join():合成一个字符串,用连接的参数调用,如" ‘,’.join(a)"
- strip():去除字符串两端不想要的字符。还有lstrip(),rstrip(),多个参数直接写在一起,如:s.strip(’$_-+’)
- replace():替代
- lower、upper、capitalize:首字母大写capitalize
- 多行的时候可以使用:
- 正则表达式:import re
- 列表:
- len():计算元素数量
- max()、min()最大值最小值
- count():计算某元素出现次数
- 索引值:[-1]倒数第一个,[-2]倒数第二个
- 切片:list[0:2],得到第一第二个组成的新列表
- 复制:
list1 = list2[:]
- 连接:+
- in和not in:
if a in list: #返回的是布尔值
- 追加、删除、弹出:append()向列表末尾追加一个新元素,remove()从列表中删除一个特定元素,pop()从列表末尾删除一个元素 a_list.append(4)
- 反转: reverse(),注意他是原地反转,改变了自己
- 排序:sort(),原地排序
- sorted:太长了,忽略
- 元组
- 字典
- 简化for循环:列表、集合、字典生成式:P32
# 使用列表生成式选择特定的行
my_data = [[1,2,3], [4,5,6], [7,8,9]]
rows_to_keep = [row for row in my_data if row[2] > 5]
print ("Output #130 (list comprehension): {}".format(rows_to_keep))
-
函数:使用 Google 或 Bing 来搜索“< 你需要的功 能描述 > Python function”可以帮助你找到想要的 Python 函数。
-
读取文件
with open(file,"r",newline='') as filereader:
-
读取多个文件:glob和os
-
write 方法可将单个 字符串写入一个文件, writelines 方法可将一系列字符串写入一个文件。
-
range:形成数字列表?
第二章
- 读写CSV文件
- 基础实现,不使用csv模块:
# __author: HY
# date: 2019/4/8
import sys
input_file = "供应商数据.csv"
output_file = "输出.csv"
# newline是换行标志
with open(input_file, "r", newline='') as filereader:
with open(output_file, "w", newline='') as filewriter:
header = filereader.readline()
header = header.strip()
header_list = header.split(',')
print(header_list)
filewriter.write(','.join(map(str, header_list)) + '\n')
# 前面经过一个readline()后指针在实际的第一行数据后面了,后面输出的就是实际数据了
for row in filereader:
row = row.strip()
row_list = row.split(',')
print(row_list)
filewriter.write(','.join(map(str, row_list)) + '\n')
# 因为数据里有逗号,所以拆分失败
- pandas实现
# __author: HY
# date: 2019/4/9
import pandas as pd
input_file = "供应商数据.csv"
output_file = "pandas输出.csv"
# python 导入数据错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start
# 编码问题,在参数那里加上encoding='gbk'就行了,至于为什么换成gbk就行了就不知道了
data_frame = pd.read_csv(input_file, encoding='gbk')
print(data_frame)
data_frame.to_csv(output_file)
- 使用csv模块
# __author: HY
# date: 2019/4/9
import csv
input_file = "供应商数据.csv"
output_file = "csv输出.csv"
with open(input_file, "r", newline='') as csv_in_file:
with open(output_file, "w", newline='') as csv_out_file: