Learn_for_Pandas
1.Series
Series类似于一维向量组,只不过包含了value和index,如
import pandas as pd
obj = pd.Series([4, 7, -5, 3])
#obj =
0 4
1 7
2 -5
3 3
obj.values#返回Series的值
obj.index#返回索引值
#可以根据index进行索引
obj[x]或者obj[[x1, x2,..., x3]]#x可以是整数型也可以为字符串
#遮罩层
obj[obj > value],过滤得到Series中值大于特定value的Series,不改变obj本身值
#可以将Python中的字典dict直接转换为Series
data = {key1:value1, key2:value2, ..}
obj = pd.Series(data)#obj中的index为key,value为字典中的value
pd.isnull()和pd.notnull()处理nan值
#####Series和Series的index都有name对象
obj.name = xxx
obj.index.name = xxx
#####Series的index可以被赋值
obj.index = [str1/int1, ...]
- 创建Series
# 1
import pandas as pd
countries = ['中国', '美国', '澳大利亚']
countries_s = pd.Series(countries)
# 2
country_dicts = {'CH': '中国',
'US': '美国',
'AU': '澳大利亚'}
country_dict_S = pd.Series(country_dicts)
#给索引命名
country_dict_s.index.name = 'Code'
#给数据命名
country_dict_s.name = 'Country'
- 处理缺失数据
字符串类型处理为None,数据类型处理为Nan- Series 索引
通过索引判断数据是否存在,使用in iloc 按index值索引,从0开始,如iloc[0]; loc 按key值进行索引,如loc['key']或者直接['key’]索引也可以同时操作多个 xxx.iloc[[0, 2, 5]]#例子 xxx.loc[['a', 'b']]#- 向量化操作
2.DataFrame
可以简单理解为DataFrame是包含行和列索引的矩阵。
当索引index(包含行和列)大于value值得个数,对应的值填为nan;
当value多于index的话,index决定DataFrame最后的形状
列索引与行索引
列索引:df.columns_index或者df['columns_index']
行索引:df.loc['rows_index']或者df.iloc[int_num]
混合索引:df.columns_index.loc['rows_index']/ df.columns_index.iloc[int_num]/ df.columns_index['rows_index'] #先列后行 df['columns_index']XXX等价
df.loc[].columns_index /df.loc[]['columns_index']#先行后列 df.iloc[int_num]XXX等价
del 以删除字典的方式删除指定的一列
创建新的column时不能采用df.columns_index,只能采用df['columns_index'] = xx
删除列同样也只能采用del df['columns_index']方式
注意: 创建或者删除colums是在原df种立即生效的,建议在操作df前,使用copy备份一份
####### 当data是一个包含字典的字典,DataFrame的处理
dicts = {key1:{sub_key1:value1, sub1_key1:value2}, key2:{sub_key2:value1, sub1_key2:value2, sub2_key2:value3}}
pandas处理这样的数据时,将外层的key作为columns,内层的key作为rows, 对于对应index不存在的value默认填充为nan
####### dataframe 可以为index和columns均设置名称
df.index.name = str1
df.columns.name = str2
不同于Python的set,pandas可以使用重复的标签
Index的一些方法
方法|描述
append| 在已有的index增加新的index,并返回
difference| index1.difference(index2),返回index1中不在index2中的元素
intersection| index1.intersection(index2),返回index1与index2的交集
union|index1.intersection(index2),返回index1与index2的并集
isin|index1.isin(index2),index1中对应的元素存在于index2中,则index1对应位置为True,否则为False
delete| index.delete(loc),删除对应位置的元素
drop|index.drop(labels)
insert|index.insert(loc, value)
is_monotonic|
is_unique|index.is_unique 如果元素唯一,返回True,否则False
unique| index.unique(),返回唯一元素,类似于set