python数据分析实战---基础准备

下载安装使用工具Anaconda

https://www.anaconda.com/distribution/#download-section

安装完毕后,在开始找到spyder即可。

python的编程基础

1.定义、变量、赋值

  变量的命名规则,可以用a-z,A-Z,数字,下划线组成,首字母不能是数字或者下划线,变量名不能是python的保留字,大小写的赋值是不一样的。

2.数据类型

  布尔型(与&、或|、非not)、数值型、字符型

 1 x = 1;
 2 y = 2;
 3
 4 x + y
 5 x - y
 6 x * y
 7 x / y
 8
 9 #取整
10 7 // 4
11 #求余
12 10 % 4
13
14 #乘方
15 2 ** 3
16
17 #一个关于浮点数运算需要注意的地方
18 a = 4.2
19 b = 2.1
20 a + b
21
22 (a + b) == 6.3
23
24 from decimal import Decimal
25 a = Decimal(‘4.2‘)
26 b = Decimal(‘2.1‘)
27 a + b
28
29 print(a + b)
30
31 (a + b) == Decimal(‘6.3‘)

数值型

  1 x = ‘我是一个字符串‘;
  2 y = "我也是一个字符串";
  3
  4
  5 #字符串str用单引号(‘ ‘)或双引号(" ")括起来
  6
  7 #使用反斜杠(\)转义特殊字符。
  8 s = ‘Yes,he doesn\‘t‘
  9 print(s, type(s), len(s))
 10
 11 #如果你不想让反斜杠发生转义,
 12 #可以在字符串前面添加一个r,表示原始字符串
 13 print(‘C:\some\name‘)
 14
 15 print(r‘C:\some\name‘)
 16
 17 #反斜杠可以作为续行符,表示下一行是上一行的延续。
 18 #还可以使用"""..."""或者‘‘‘...‘‘‘跨越多行
 19 s = "abcd 20 efg"
 21 print(s);
 22
 23 s = """
 24 Hello I am fine!
 25 Thinks.
 26 """
 27 print(s);
 28
 29 #字符串可以使用 + 运算符串连接在一起,或者用 * 运算符重复:
 30 print(‘str‘+‘ing‘, ‘my‘*3)
 31
 32 #Python中的字符串有两种索引方式
 33 #第一种是从左往右,从0开始依次增加
 34 #第二种是从右往左,从-1开始依次减少
 35 #注意,没有单独的字符类型,一个字符就是长度为1的字符串
 36 word = ‘Python‘
 37 print(word[0], word[5])
 38 print(word[-1], word[-6])
 39
 40 #还可以对字符串进行切片,获取一段子串
 41 #用冒号分隔两个索引,形式为变量[头下标:尾下标]
 42 #截取的范围是前闭后开的,并且两个索引都可以省略
 43 word = ‘ilovepython‘
 44 word[1:5]
 45 #‘love‘
 46 word[:]
 47 #‘ilovepython‘
 48 word[5:]
 49 #‘python‘
 50 word[-10:-6]
 51 #‘love‘
 52 #Python字符串不能被改变
 53 #向一个索引位置赋值,比如word[0] = ‘m‘会导致错误。
 54 word[0] = ‘m‘
 55
 56
 57 #检测开头和结尾
 58 filename = ‘spam.txt‘
 59 filename.endswith(‘.txt‘)
 60
 61 filename.startswith(‘file:‘)
 62
 63 url = ‘http://www.python.org‘
 64 url.startswith(‘http:‘)
 65
 66 choices = (‘http:‘, ‘https‘)
 67 url = ‘https://www.python.org‘
 68 url.startswith(choices)
 69
 70 choices = [‘http:‘, ‘https‘]
 71 url = ‘https://www.python.org‘
 72 url.startswith(choices)
 73
 74
 75 #查找某个字符串
 76 string = "I am KEN"
 77 string.find("am")
 78 string.find("boy")
 79 #忽略大小写的搜索
 80
 81 import re
 82 text = ‘UPPER PYTHON, lower python, Mixed Python‘
 83 re.findall(‘python‘, text, flags=re.IGNORECASE)
 84
 85 #搜索和替换
 86 text = ‘yeah, but no, but yeah, but no, but yeah‘
 87 text.replace(‘yeah‘, ‘yep‘)
 88
 89 #忽略大小写的替换
 90 text = ‘UPPER PYTHON, lower python, Mixed Python‘
 91 re.sub(‘python‘, ‘snake‘, text, flags=re.IGNORECASE)
 92
 93 #合并拼接字符串
 94 parts = [‘Is‘, ‘Chicago‘, ‘Not‘, ‘Chicago?‘]
 95 ‘ ‘.join(parts)
 96 ‘Is Chicago Not Chicago?‘
 97 ‘,‘.join(parts)
 98 ‘Is,Chicago,Not,Chicago?‘
 99 ‘‘.join(parts)
100 ‘IsChicagoNotChicago?‘
101
102 #接下来几节课中,我们还会有一些常用的字符串使用方法

字符型

3.数据结构

 1 #列表中,可以有不同的数据类型,以及相同的值
 2 a = [‘him‘, 25, 100, ‘her‘, 100, 25]
 3 print(a)
 4
 5 #和字符串一样,列表同样可以被索引和切片,
 6 #列表被切片后返回一个包含所需元素的新列表
 7 a[1:3]
 8
 9 #列表还支持串联操作,使用+操作符
10 a = [1, 2, 3, 4, 5]
11 a + [6, 7, 8]
12 #[1, 2, 3, 4, 5, 6, 7, 8]
13
14 #列表中的元素是可以改变的:
15 a = [1, 2, 3, 4, 5, 6]
16 a[0] = 9
17 a[2:5] = [13, 14, 15]
18 a
19 #[9, 2, 13, 14, 15, 6]
20 a[2:5] = []   # 删除
21 a
22 #[9, 2, 6]
23
24 #判断值是否存在列表中
25 25 in a
26
27 2 in a
28
29 #判断多个值,那么就要用到set
30 set([2, 100]) <= set(a)

列表

 1 a = (1991, 2014, ‘physics‘, ‘math‘)
 2 print(a, type(a), len(a))
 3 #(1991, 2014, ‘physics‘, ‘math‘) <class ‘tuple‘> 4
 4 #元组与字符串类似,可以被索引且下标索引从0开始,
 5 #也可以进行截取/切片
 6
 7 #其实,可以把字符串看作一种特殊的元组。
 8 tup = (1, 2, 3, 4, 5, 6)
 9 print(tup[0], tup[1:5])
10 #1 (2, 3, 4, 5)
11 tup[0] = 11  # 修改元组元素的操作是非法的
12
13 #虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
14 #构造包含0个或1个元素的tuple是个特殊的问题,所以有一些额外的语法规则:
15 tup1 = () # 空元组
16 tup2 = (20,)
17 tup2 = (20)
18
19 #另外,元组也支持用+操作符:
20 tup1, tup2 = (1, 2, 3), (4, 5, 6)
21
22 print(tup1+tup2)
23 #(1, 2, 3, 4, 5, 6)

元组

 1 student = {‘Tom‘, ‘Jim‘, ‘Mary‘, ‘Tom‘, ‘Jack‘, ‘Rose‘}
 2 print(student)   # 重复的元素被自动去掉
 3 #{‘Jim‘, ‘Jack‘, ‘Mary‘, ‘Tom‘, ‘Rose‘}
 4
 5 ‘Rose‘ in student  # membership testing(成员测试)
 6 #True
 7
 8 ‘KEN‘ in student  # membership testing(成员测试)
 9
10 # set可以进行集合运算
11 a = set(‘abracadabra‘)
12 b = set(‘alacazam‘)
13 a
14 b
15 #{‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘r‘}
16 a - b     # a和b的差集
17 #{‘b‘, ‘d‘, ‘r‘}
18 a | b     # a和b的并集
19 #{‘l‘, ‘m‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘z‘, ‘r‘}
20 a & b     # a和b的交集
21 #{‘a‘, ‘c‘}
22 a ^ b     # a和b中不同时存在的元素
23 #{‘l‘, ‘m‘, ‘b‘, ‘d‘, ‘z‘, ‘r‘}
24
25 a = [‘him‘, 25, 100, ‘her‘, 100, 25]
26
27 #判断多个值,那么就要用到set
28 set([25, 100]) <= set(a)

集合

 1 dic = {}  # 创建空字典
 2 tel = {‘Jack‘:1557, ‘Tom‘:1320, ‘Rose‘:1886}
 3 tel
 4 #{‘Tom‘: 1320, ‘Jack‘: 1557, ‘Rose‘: 1886}
 5
 6 tel[‘Jack‘]   # 主要的操作:通过key查询
 7 #1557
 8
 9 del tel[‘Rose‘]  # 删除一个键值对
10 tel
11
12 tel[‘Mary‘] = 4127  # 添加一个键值对
13 tel
14 #{‘Tom‘: 1320, ‘Jack‘: 1557, ‘Mary‘: 4127}
15
16 list(tel.keys())  # 返回所有key组成的list
17 #[‘Tom‘, ‘Jack‘, ‘Mary‘]
18
19 sorted(tel.keys()) # 按key排序
20 #[‘Jack‘, ‘Mary‘, ‘Tom‘]
21
22 ‘Tom‘ in tel       # 成员测试
23 #True
24
25 ‘Mary‘ not in tel  # 成员测试
26 #False
27
28 ‘KEN‘ in tel
29
30 #构造函数 dict() 直接从键值对sequence中构建字典,当然也可以进行推导,如下:
31 dict([(‘sape‘, 4139), (‘guido‘, 4127), (‘jack‘, 4098)])
32 #{‘jack‘: 4098, ‘sape‘: 4139, ‘guido‘: 4127}
33
34 dict(sape=4139, guido=4127, jack=4098)
35 #{‘jack‘: 4098, ‘sape‘: 4139, ‘guido‘: 4127}

字典

  pandas数据结构:包含Series(系列)和DataFrame(数据框)

  系列是用于存储一行或者一列的数据,以及与之相关的索引集合

 1 from pandas import Series;
 2
 3 #定义,可以混合定义
 4 x = Series([‘a‘, True, 1], index=[‘first‘, ‘second‘, ‘third‘]);
 5 x = Series([‘a‘, True, 1]);
 6
 7 #访问
 8 x[1];
 9 #根据index访问
10 x[‘second‘];
11
12 #不能越界访问
13 x[3]
14
15 #不能追加单个元素
16 x.append(‘2‘)
17 #追加一个序列
18 n = Series([‘2‘])
19 x.append(n)
20
21 #需要使用一个变量来承载变化
22 x = x.append(n)
23
24 ‘2‘ in x
25
26 #判断值是否存在
27 ‘2‘ in x.values
28
29 #切片
30 x[1:3]
31
32 #定位获取,这个方法经常用于随机抽样
33 x[[0, 2, 1]]
34
35 #根据index删除
36 x.drop(0)
37 x.drop(‘first‘)
38
39 #根据位置删除
40 x.drop(x.index[3])
41
42 #根据值删除
43 x[‘2‘!=x.values]

  数据框是用于存储多行和多列的数据集合

 1 from pandas import DataFrame;
 2
 3 df = DataFrame({
 4     ‘age‘: [21, 22, 23],
 5     ‘name‘: [‘KEN‘, ‘John‘, ‘JIMI‘]
 6 });
 7
 8 df = DataFrame(data={
 9     ‘age‘: [21, 22, 23],
10     ‘name‘: [‘KEN‘, ‘John‘, ‘JIMI‘]
11 }, index=[‘first‘, ‘second‘, ‘third‘]);
12
13 df
14
15 #按列访问
16 df[‘age‘]
17 #按行访问
18 df[1:2]
19
20 #按行列号访问
21 df.iloc[0:1, 0:1]
22
23 #按行索引,列名访问
24 df.at[0, ‘name‘]
25
26 #修改列名
27 df.columns
28 df.columns=[‘age2‘, ‘name2‘]
29
30 #修改行索引
31 df.index
32 df.index = range(1,4)
33 df.index
34
35 #根据行索引删除
36 df.drop(1, axis=0)
37 #默认参数axis=0
38 #根据列名进行删除
39 df.drop(‘age2‘, axis=1)
40
41 #第二种删除列的方法
42 del df[‘age2‘]
43
44 #增加行,注意,这种方法,效率非常低,不应该用于遍历中
45 df.loc[len(df)] = [24, "KENKEN"];
46
47 #增加列
48 df[‘newColumn‘] = [2, 4, 6, 8];

4.程序结构

  顺序结构,从上到下执行代码

  选择结构:if....else....

 1 """
 2 if 判断条件:
 3     执行语句……
 4 else:
 5     执行语句……
 6 """
 7
 8 flag = False
 9 name = ‘luren‘
10 if name == ‘python‘:         # 判断变量否为‘python‘
11     flag = True          # 条件成立时设置标志为真
12     print(‘welcome boss‘)    # 并输出欢迎信息
13 else:
14     print(name)              # 条件不成立时输出变量名称
15
16
17
18 num = 5
19 if num == 3:            # 判断num的值
20     print(‘boss‘)
21 elif num == 2:
22     print(‘user‘)
23 elif num == 1:
24     print(‘worker‘)
25 elif num < 0:           # 值小于零时输出
26     print(‘error‘)
27 else:
28     print(‘roadman‘)     # 条件均不成立时输出

  循环结构:while、for

 1 from pandas import Series;
 2 from pandas import DataFrame;
 3
 4 for i in range(10):
 5     print(‘现在是: ‘, i)
 6
 7 for i in range(3, 10):
 8     print(i)
 9
10 #遍历字符串
11 for letter in ‘Python‘:
12    print (‘现在是 :‘, letter)
13
14 #遍历数组
15 fruits = [‘banana‘, ‘apple‘,  ‘mango‘]
16
17 for fruit in fruits:
18    print (‘现在是 :‘, fruit)
19
20 #遍历序列
21 x = Series([‘a‘, True, 1], index=[‘first‘, ‘second‘, ‘third‘]);
22 x[0];
23 x[‘second‘];
24 x[2];
25
26 for v in x:
27     print("x中的值 :", v);
28
29 for index in x.index:
30     print("x中的索引 :", index);
31     print("x中的值 :", x[index]);
32     print("---------------------")
33
34 #遍历数据框
35 df = DataFrame({
36     ‘age‘: Series([21, 22, 23]),
37     ‘name‘: Series([‘KEN‘, ‘John‘, ‘JIMI‘])
38 });
39
40 #遍历列名
41 for r in df:
42     print(r);
43
44 #遍历列
45 for cName in df:
46     print(‘df中的列 :\n‘, cName)
47     print(‘df中的值 :\n‘, df[cName]);
48     print("---------------------")
49
50 #遍历行,方法一
51 for rIndex in df.index:
52     print(‘现在是第 ‘, rIndex, ‘ 行‘)
53     print(df.irow(rIndex))
54
55 #遍历行,方法二
56 for r in df.values:
57     print(r)
58     print(r[0])
59     print(r[1])
60     print("---------------------")
61
62 #遍历行,方法三
63 for index, row in df.iterrows():
64     print(‘第 ‘, index, ‘ 行:‘)
65     print(row)
66     print("---------------------")
67     

for

 1 from pandas import Series;
 2 from pandas import DataFrame;
 3
 4 #最普通的while循环
 5 i = 0
 6 while i <= 9:
 7    print(‘遍历到 :‘, i);
 8    i = i+1;
 9
10 #整合if判断语句,使用continue
11 i = 1
12 while i < 10:
13     i += 1              # i = i + 1
14     if i%2 != 0:         # 非双数时跳过输出
15         continue
16     print(i)            # 输出双数2、4、6、8、10
17
18 #整合if判断语句,使用break
19 i = 1
20 while True:             # 循环条件为1必定成立
21     print(i)            # 输出1~10
22     i += 1
23     if i > 10:          # 当i大于10时跳出循环
24         break
25
26 #当然,我们也可以使用while语句来访问DataFrame等数据结构
27 df = DataFrame({
28     ‘age‘: Series([21, 22, 23]),
29     ‘name‘: Series([‘KEN‘, ‘John‘, ‘JIMI‘])
30 });
31
32 rowCount = len(df);
33
34 i = 0;
35
36 while i<rowCount:
37     print(df.irow(i));
38     i = i+1;
39     print("-------------------------")

while

5.函数

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3
 4 # 不带参数的函数
 5 def printLine():
 6    #输出一条横线
 7    print("--------------------------------------------");
 8    #没有返回值
 9    #return;
10
11 printLine();
12
13 # 带参数的函数
14 def printInfo(name, age):
15    print("name is: ", name, "; age is: ", age);
16    #没有返回值
17    return;
18
19 # 正确调用
20 printInfo("KEN", 18);
21 printInfo(age=18, name="KEN");
22
23 #错误调用
24 printInfo("KEN");
25
26 # 默认参数的函数
27 def printInfo(name, age=20):
28    print("name is: ", name, "; age is: ", age);
29    #没有返回值
30    return;
31
32 #正确调用
33 printInfo("KEN");
34
35
36 # 可变长参数的函数--数组形式
37 def printInfo(name, *args):
38    #打印任何传入的字符串
39    print("name is: ", name);
40    printLine();
41    for arg in args:
42        print(arg);
43    #没有返回值
44    return;
45
46 #正确调用
47 printInfo("KEN", 20, "男", 178, "70KG", ‘abc‘);
48
49
50 # 可变长参数的函数--kv方式
51 def printInfo(name, **kvArgs):
52    #打印任何传入的字符串
53    print("name is: ", name);
54    printLine();
55    for k in kvArgs:
56        print(k, "is: ", kvArgs[k]);
57    #没有返回值
58    return;
59
60 #正确调用
61 printInfo("KEN", age=20, sex="男", height="178", weight="70KG");
62
63 #错误调用
64 printInfo("KEN", 20, "男");
65
66
67 #有返回值的函数
68 def maxValue(*args):
69     rValue = args[0];
70     for var in args:
71         if rValue < var :
72             rValue = var;
73     return rValue;
74
75 r = maxValue(4, 5, 2, 6, 7, 1);
76 print(r);
77
78 sumValue = lambda arg1, arg2: arg1+arg2;
79 r = sumValue(1, 5)
80 print(r)
81
82 import numpy;
83 from pandas import DataFrame;
84
85 df = DataFrame({
86     ‘key1‘: [‘a‘,‘a‘,‘b‘,‘b‘,‘a‘],
87     ‘key2‘: [‘one‘,‘two‘,‘one‘,‘two‘,‘one‘],
88     ‘data1‘: numpy.random.randn(5),
89     ‘data2‘: numpy.random.randn(5)
90 });
91
92 df.groupby(‘key1‘)[‘data1‘,‘data2‘].agg(lambda arr:arr.max()-arr.min())

6.向量化计算

   向量化计算是一种特殊的并行计算的方式,相比于一般程序在同一时间只能执行一个操作的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或者一批指令,或者说把指令应用与一个数组/向量。

  生成等差数列、四则运算

 1 #生成一个整数的等差序列
 2 #局限,只能用于遍历
 3 r1_10 = range(1, 10, 2)
 4
 5 for i in r1_10:
 6     print(i)
 7
 8 r1_10 = range(0.1, 10, 2)
 9
10
11 #生成一个小数的等差序列
12 import numpy
13 numpy.arange(0.1, 0.5, 0.01)
14
15 r = numpy.arange(0.1, 0.5, 0.01)
16
17 #向量化计算,四则运算
18 r + r
19 r - r
20 r * r
21 r / r
22
23 #长短不一时
24 r + 1
25
26 #函数式的向量化计算
27 numpy.power(r, 5)
28
29 #向量化运算,比较运算
30 r>0.3
31 #结合过滤进行使用
32 r[r>0.3]
33
34 #矩阵运算
35 numpy.dot(r, r.T)
36
37 sum(r*r)
38
39 from pandas import DataFrame
40 df = DataFrame({
41     ‘data1‘: numpy.random.randn(5),
42     ‘data2‘: numpy.random.randn(5)
43 })
44
45 df.apply(lambda x: min(x))
46
47 df.apply(lambda x: min(x), axis=1)
48
49 #判断每个列,值是否都大于0
50 df.apply(lambda x: numpy.all(x>0), axis=1)
51 #结合过滤
52 df[df.apply(lambda x: numpy.all(x>0), axis=1)]

原文地址:https://www.cnblogs.com/garrett0220/p/10856679.html

时间: 2024-12-10 03:43:21

python数据分析实战---基础准备的相关文章

【python数据分析实战】电影票房数据分析(一)数据采集

目录 1.获取url 2.开始采集 3.存入mysql 本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析. 1.获取url 我们先打开猫眼票房http://piaofang.maoyan.com/dashboard?date=2019-10-22 ,查看当日票房信息, 但是在通过xpath对该url进行解析时发现获取不到数据. 于是按F12打开Chrome DevTool,按照如下步骤抓包 再打开获取到的url:http://pf.maoyan.com/second-bo

【python数据分析实战】电影票房数据分析(二)数据可视化

目录 图1 每年的月票房走势图 图2 年票房总值.上映影片总数及观影人次 图3 单片总票房及日均票房 图4 单片票房及上映月份关系图 在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来并做成动态可视化. 图1 每年的月票房走势图 第一张图,我们要看一下每月的票房走势,毫无疑问要做成折线图,将近10年的票房数据放在一张图上展示. 数据抽取: 采集到的票房数据是

Python数据分析(基础)

目录: Python基础: Python基本用法:控制语句.函数.文件读写等 Python基本数据结构:字典.集合等 Numpy:简述 Pandas:简述 一. Python基础: 1.1 文件读取 1).打开文件2).操作数据(读.写)3).关闭文件 ** 打开文件: fp = open(path, 打开方式, encoding=, errors='Ignore') 操作数据: 打开方式: 'r':表示只读字符(readonly) #'r+':在只读的功能下,在追加一个写的功能 'w':表示只

python数据分析实战-第2章-ptyhon世界简介

第2章 Python世界简介 122.1 Python--编程语言 122.2 Python--解释器 132.2.1 Cython 142.2.2 Jython 142.2.3 PyPy 142.3 Python 2和Python 3 142.4 安装Python 152.5 Python发行版 152.5.1 Anaconda 152.5.2 Enthought Canopy 162.5.3 Python(x,y) 172.6 使用Python 172.6.1 Python shell 17

python数据分析实战-第9章-数据分析实例气象数据

第9章 数据分析实例--气象数据 2309.1 待检验的假设:靠海对气候的影响 2309.2 数据源 2339.3 用IPython Notebook做数据分析 2349.4 风向频率玫瑰图 2469.5 小结 251 123 import numpy as npimport pandas as pdimport datetime 1 ferrara = pd.read_json('http://api.openweathermap.org/data/2.5/history/city?q=Fer

数据分析实战基础--在R 软件中运用

一.R 中的循环 for循环语句 while循环语句 if()   next---跳过. if()break----不执行. true  一直执行. 要赋初始值 repeat 循环语句

python数据分析实战-第6章-深入pandas数据处理

第6章 深入pandas:数据处理 117 6.1 数据准备 117 合并 1234567891011 #merge是两个dataframe共同包含的项import numpy as npimport pandas as pdframe1 = pd.DataFrame( {'id':['ball','pencil','pen','mug','ashtray'], 'price': [12.33,11.44,33.21,13.23,33.62]})print(frame1)print()frame

python数据分析实战-第7章-用matplotlib实现数据可视化

第7章 用matplotlib实现数据可视化 149 7.1 matplotlib库 149 7.2 安装 150 7.3 IPython和IPython QtConsole 150 7.4 matplotlib架构 151 7.4.1 Backend层 152 7.4.2 Artist层 152 7.4.3 Scripting层(pyplot) 153 7.4.4 pylab和pyplot 153 7.5 pyplot 154 7.5.1 生成一幅简单的交互式图表 154 123 import

python数据分析实战-第3章-numpy库

第3章 NumPy库 32 3.1 NumPy简史 32 3.2 NumPy安装 32 3.3 ndarray:NumPy库的心脏 33 1 import numpy as np 1 a = np.array([1, 2, 3]) 1 a array([1, 2, 3]) 1 type(a), a.dtype, a.ndim, a.size, a.shape, a.itemsize (numpy.ndarray, dtype('int64'), 1, 3, (3,), 8) 1 b = np.a