0%

第八课:pandas

2019年11月8日 下午5:33
Python:pandas DataFrame取多列的方法

  • 选择表格中的’w’、’z’列
    • data[[‘w’,’z’]]

2018年1月8日 下午5:33

源码:

class8.html

主要内容:

  1. 两种数据类型(主)
    1. Series
      1. 生成:
        1. list
        2. 字典
      2. 特殊住处在于对索引有很多操作,我把他和数据操作对比,叫做结构操作
      3. 还可以有更加任性的切片操作
    2. DataFrame
      1. 生成:
        1. 字典中包含list来生成
        2. numpy的narry生成
      2. 大部分是对对整列/整行进行操作
      3. 特殊之处在于可以向Sql一样操作
    3. 其实就是一维数组/二维数组的增删改查
  2. pandas画图
  3. 数据分析例题

问题:

  1. 数据处理:这门知识我本身是不熟悉的,我从来没有进行过数据处理,这种处理能力的源头是对数学的敏感,以及对数学知识的掌握,掌握编程相比于掌握数学要简单的多
  2. 先站在现实的角度去思考问题,然后才是动手编程。这里的先站在现实的角度去思考问题中要加上从数学统计的角度去思考问题,这种思考又对我们提出了新的要求
  3. 数据分析=机器学习:在这节最后的例题“泰坦尼克号”中,在预测缺失年龄的过程中就是使用了及机器学习。但是,我不懂得原理,参数也不知道是啥
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from pandas import DataFrame, Series, read_csv
import random

# 读csv
file = "/Users/czh/Downloads/test/anor.csv"
data = read_csv(file)

# map:19个属性对应的col的下标<int,int><key,value>
data_cols = data.columns.values.tolist()

cols_need = ["VK27","TK42","TK43","TK44","TK45","IK1","IK2","IK3","IK4","ZK158","ZK160","ZK161","ZK162","ZK163","ZK11.B0","ZK115.B0","ZK11.B0.1","ZK115.B0.1"]
cols_need = ["BX0101_" + x for x in cols_need]

dic = {}
for col in range(len(cols_need)):
for col_ in range(len(data_cols)):
if (cols_need[col] == data_cols[col_]):
dic[col] = col_
# print(dic)
# start~end行的数据
for start in range(5):
# 计算行的开始和结尾
start *= 1000;
end = start + 1000;
# 计算随机选择rand_nums列
rand_nums = random.randint(0,9) # 确定选多少列
rand_cols = [random.randint(0,len(cols_need) - 1) for x in range(rand_nums)] # 选的这些列具体是哪些
for col in rand_cols:
# 随机值m
rand_m = random.randint(0,50) / 100
print('start = {}, end = {}, col = {}, dic[col] = {}, col_name = {}, rand_m = {}'.format(start,end,col,dic[col],data_cols[dic[col]],rand_m))
data.iloc[start:end, dic[col]] *= (rand_m + 1);

data.to_csv('/Users/czh/Downloads/test/anor2.csv',index=False)