Pandas 随笔分享

1、创建一个空的dataframe ,并且里面直接含有索引和列名

 result =pd.DataFrame(columns=('idx','degree','weight','diameter'),index= index_list) 

这样避免在填充数值时,index 空缺而导致的问题。

  • 1.2、也可以先设一个空的dataframe,然后后面可以append
df = pd.DataFrame({'a':[1,2,3],'b':[2,3,4]},index=range(3))
dff = pd.DataFrame([])
dff = dff.append(df.iloc[0,:])

a =pd.DataFrame([])
a = a.append(pd.Series([1,2],index=['a','b'],name=1))#  必须增加name ,作为index
a

这样避免在填充数值时,index 空缺而导致的问题。

2、如果在一个df 中,有一列每个元素是 一个tuple 或者是一个list,那么你想让一列变成多列。

df=pd.DataFrame({'a':[(1,2),(2,3)]})
image.png
df[['a1','a2']] =df.a.apply(pd.Series)

image.png

这里很简单 ,就是对series 的apply 用法,也不涉及axis ,可以参考原理
官网其实是对针对series 的apply的 用法,里边也不涉及axis 参数,就是针对将每行的那个元素输入你将要apply的函数,所以pd.series(tuple)之后就会变成多个元素,正好被df[['a1','a2']]中承接。

3 groupby 和lambda 结合

切记,当groupby 中传入一个函数时,里面传入的x ,要直接理解为对象index。什么意思呢?
例如,存在一个df

date=pd.date_range('2020-01-01',periods=3)
df=pd.DataFrame({'a':[1,4,7],'b':[2,5,8],'c':[3,6,9]},index=date)
index a b c
2020-01-01 1 2 3
2020-01-01 4 5 6
2020-01-03 7 8 9
    by_year = data_merge.groupby(lambda x:x.year)  ## 这里直接用x.year
    result = by_year.apply(liner_regression)

by_year = data_merge.groupby(lambda x:x.year) 在这个代码中后面直接用x.year ,因为在传入函数中就已经默认是 x 为index.

3 dataframe 找到最大值和位置

df.stack().max()
df.stack().idxmax()

4 如果一个esv 中有多个sheet ,可以先得到sheet name

data= pd.read_excel('/Users/wangyaodong/Desktop/aencent/原始数据.xlsx',None)
names = data.keys()
 df= pd.read_excel('/Users/wangyaodong/Desktop/aencent/原始数据.xlsx',names[0])

5 双列表变成 dataframe

每个列表会变成行

pd.DataFrame([[1,2,3,[2,3,4]])
index a b c
0 1 2 3
1 2 3 4

5 reset_index 和reindex

reset_index ,可以将原来的index 抽出来变成一列,然后新的index 就是range(len(data)


image.png
result2= result.reset_index()
image.png

reindex 是指重新给index 或者column 一个 新的排列,可以 增加新的,新的可以填充空值。

result3 = result.reindex(columns=['A','C'])
image.png

也可以作用在index 上面

6 class 类

在一个文件中写一个类(object) 然后里面直接定义各种变量,也没有self ,—init 函数 ,
在其他地方import 之后可以直接引用这些变量
举个例子 ,
在文件a.py 中
class Mycalss(object):
name ='wangyd'
在b.py文件中,就可以from a import Myclass
然后就可以name = Myclass.name

6 to_csv append

df.to_csv('the_data_file.csv', mode='a', header=False)

7 dict 注意事项

现在不能写dict.values()[0:10]
而必须 list(dict.values())[0:10]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容