-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpandasLearn.py
More file actions
219 lines (194 loc) · 4.83 KB
/
pandasLearn.py
File metadata and controls
219 lines (194 loc) · 4.83 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
import pandas as pd
'''
参考资料:
Python pandas用法:https://www.jianshu.com/p/840ba135df30
pandas里面按条件筛选:https://www.jianshu.com/p/30254bc9fb40
'''
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],
'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
# 使用dict创建DataFrame
df = pd.DataFrame(data, columns=['year', 'state', 'pop'],
index=['one', 'two', 'three', 'four', 'five', 'six'])
# print(df)
'''
print(df)
year state pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9i
six 2003 Nevada 3.2
'''
# 根据条件修改标签 (用于标签离散化)
df['pop_discrete'] = 'init'
print(df)
df.loc[df['pop'] > 3.0, 'pop_discrete'] = 'big'
df.loc[(df['pop'] >= 1.0) & (df['pop'] <= 3.0), 'pop_discrete'] = 'middle'
df.loc[df['pop'] < 1.0, 'pop_discrete'] = 'small'
print(df)
# 按条件删除
# print(df)
df_drop = df.drop(index=df.loc[((df['pop'] > 2) & (df['pop'] < 3))].index)
# print(df_drop)
'''
year state pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
three 2002 Ohio 3.6
six 2003 Nevada 3.2
'''
# 判断df是否含有列
if 'year' in df_drop:
print('Contians year')
else:
print('No year')
# 筛选两列
df_sub = df[['year', 'state']]
# print(df_sub)
'''
year state
one 2000 Ohio
two 2001 Ohio
three 2002 Ohio
four 2001 Nevada
five 2002 Nevada
six 2003 Nevada
'''
# 加列
df_sub['new_col'] = {1, 2, 3, 4, 5, 6}
# print(df_sub)
'''
year state new_col
one 2000 Ohio 1
two 2001 Ohio 2
three 2002 Ohio 3
four 2001 Nevada 4
five 2002 Nevada 5
six 2003 Nevada 6
'''
# 合并两个Dataframe
df_append = df_sub.append(df_sub, ignore_index=True)
# print(df_append)
# 将df按照year这一列排序
df_sorted = df.sort_values(by='year', ascending=True)
# print(df_sorted)
'''
year state pop
one 2000 Ohio 1.5
two 2001 Ohio 1.7
four 2001 Nevada 2.4
three 2002 Ohio 3.6
five 2002 Nevada 2.9
six 2003 Nevada 3.2
'''
df_sorted['col_sub'] = df_sorted['pop'] - df_sorted['year']
# print(df_sorted)
'''
year state pop col_sub
one 2000 Ohio 1.5 -1998.5
two 2001 Ohio 1.7 -1999.3
four 2001 Nevada 2.4 -1998.6
three 2002 Ohio 3.6 -1998.4
five 2002 Nevada 2.9 -1999.1
six 2003 Nevada 3.2 -1999.8
'''
# 隔行相减
df_sorted['shift_pop'] = df_sorted['pop'].shift(1)
# df_sorted['shift_pop'].iloc[0] = df_sorted['pop'].iloc[0]
# print(df_sorted)
# 构造一个下移的行
'''
year state pop shift_pop
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 1.5
four 2001 Nevada 2.4 1.7
three 2002 Ohio 3.6 2.4
five 2002 Nevada 2.9 3.6
six 2003 Nevada 3.2 2.9
'''
df_sorted['pop'] = df_sorted['pop'] - df_sorted['shift_pop']
del df_sorted['shift_pop']
# print(df_sorted)
# 相减,并删除temp行
'''
year state pop
one 2000 Ohio NaN
two 2001 Ohio 0.2
four 2001 Nevada 0.7
three 2002 Ohio 1.2
five 2002 Nevada -0.7
six 2003 Nevada 0.3
'''
# print(df_sorted)
'''
year state pop
one 2000 Ohio NaN
two 2001 Ohio 0.2
four 2001 Nevada 0.7
three 2002 Ohio 1.2
five 2002 Nevada -0.7
six 2003 Nevada 0.3
'''
# 改列名
df_sorted = df_sorted.rename(columns={'pop': 'pop_newname'})
# print(df_sorted)
'''
year state pop_newname
one 2000 Ohio NaN
two 2001 Ohio 0.2
four 2001 Nevada 0.7
three 2002 Ohio 1.2
five 2002 Nevada -0.7
six 2003 Nevada 0.3
'''
# 重新刷一列
df_sorted['pop_newname'] = [1.0, 0.2, 1.2, 0.7, -0.7, 0.3]
'''
year state pop_newname col_sub
one 2000 Ohio 1.0 -1998.5
two 2001 Ohio 0.2 -1999.3
four 2001 Nevada 1.2 -1998.6
three 2002 Ohio 0.7 -1998.4
five 2002 Nevada -0.7 -1999.1
six 2003 Nevada 0.3 -1999.8
'''
# print(df_sorted)
df_sorted['pop_newname'].iloc[0] = 0
# print(df_sorted)
# 筛选index中的column的值,df.at[index, column]
df_filter = df.at['one', 'year']
# print(df_filter)
'''
2000
'''
# 筛选出条件的DataFrame
df_2001 = df.loc[df['year'] == 2001]
'''
print(df_2001)
year state pop
two 2001 Ohio 1.7
four 2001 Nevada 2.4
'''
# 多条件筛选,一定要加括号
df_2001_nevada = df.loc[(df['year'] == 2001) & (df['state'] == 'Nevada')]
'''
print(df_2001_nevada)
year state pop
four 2001 Nevada 2.4
'''
# 删除列
# del df['state', 'pop'] 不可以
del df['state']
del df['pop']
# print(df)
'''
year
one 2000
two 2001
three 2002
four 2001
five 2002
six 2003
'''