Python集成开发环境和数据结构

1. 开发工具

Jupyter Notebook:基于网页的交互计算的应用程序
Spyder: 优点可以模仿MATLAB的工作空间功能,方便的观察和修改数组的值

2. 常用数据结构

数字;字符串;列表 (一维序列,内容可以修改,用[]标识);元组;字典 (键值对,可以用 {} 表示);集合

3. 控制语句和函数

三元表达式:output = “Yes” if i >3 else “No”
推导式是一种for循环, output=[i+10 for i in range(1,5)]; output= [i+10 for i in range(1,5) if i>2]
匿名函数:lambda

4. 表格对象

NumPy: 数据元素必须具有相同的类型 np.array([1,2,3], dtype=float)
Pandas: 表格处理,提供了2种数据类型,分别是Series, DataFrame和Panel; Series保存一维数据,DataFrame保存二维数据,Panel保存三位及以上

4.1 Series数据结构

本质上是一个含有索引的一维数组,包括index和values,分别使用s.index,s.values进行查看,带有索引的列表,索引可以理解为R中的行名,

4.2 DataFrame(数据框)

类似于Excel电子表格,与R语言的DataFrame数据结构类似
创建:

df = pd.DataFrame(['a', 1, 2], ['b', 3, 5], ['c', 3,3], columns=['x', 'y', 'z'])
df=pd.DataFrame(np.zeros(3,3), columns=['x', 'y', 'z'])

字典创建:

df = pd.DataFrame({'x' :['a','b', 'c'], 'y':range(1,4), 'z':[2,5,3]})

数据框统计:

df.shape, len(df), df.shape(1), df.columns, df.index。
重新定义列名:df.columns = ["X", "Y", "Z"]
重新更改某列的列明:df.rename(columns={'x':'X'}, inplace=TRUE)
df.head(); df.tail()

数据框额多重索引:df.set_index([‘X’, ‘year’])有两层索引
空数据框的创建:df_empty = pd.DataFrame(columns=["x", "y", "z"])

4.3 Categorical: R语言的因子向量

cut=['Fair', 'good', 'Premium', 'Ideal']
cut_F=pd.Categorical(cut)

改变因子的顺序:cut_F= cut.astype('category', categories=['Good', 'Very Good', 'Ideal'], order=TRUE)

分类数据的编码和值:cut_F.codes; cut_F.categories

5. 表格变换

# 二维数据框转化为一维数据框:
pd.melt(df, id_vars='X', var_name='year', value_name = 'value')
# 一维变二维:
df_melt.pivot_table(index="X", columns="year", values="value")
df_pivot=df_pivot_reset_index()

变量的变换:
对某列进行加减产生新的列:

df_melt["value2"] = df_melt["value"]*2

#使用python的transform: 
df_melt['value2']=df_melt.trasform(lambda x: x['value']*2 if x['year'] == '2011' else x['value'], axis=1)
#表格的排序:
dat_sort3 = df_melt_sort_values(by=['year', 'value'], ascending =True)
#表格的拼接:dat_cbind=pd.concat([df1, df2], axis=1)   # axis =0 纵轴,axis=1横轴
#添加行: dat_rbind =pd.concat([df1,df2], axis=0)
dat_rbind=df1.append(df3)

#删除行或者列:df1.drop(labels='y', axis=1, inplace=True) # labels 是要删除行或者列的名字

6. 表格的分组操作

6.1 多列同时进行运算

df['2010_2011'] = df.apply(lambda x: x['2010'] + 2 * x['2011'], axis=1)

6.2 分组操作

df_group_mean1 = df_melt.groupby('year').mean()
df_group_mean2 = df_melt.groupby(["year", "x"], as_index=False).mean()

df_group_sum=df_melt.groupby('year').sum()
df_group_std= df_melt.groupby('year').std()

6.3 分组聚合

aggregate()函数结合groupby可以实现SQL中分组聚合运算

df_group2 = df_melt.groupby(['x','year']).aggregate(np.mean, np.median)
df_group3=df_melt.groupby(['x', 'year']).agg({'value': {"mean": np.mean, 'median':np.median}})

df_melt['percentage'] = df_melt.groupby('x')['value'].transform(lambda x: x/x.sum())
df_filter = df_melt.groupby('x').fillter(lambda x: x['value'].mean() >4)

7. 数据导入和导出

pd.read.csv(); pd.to_csv()
pd.read_excel('data.xlsx', sheetname='sheetname', header=0)
df.to_excel(excel_writer, sheet_name = 'sheetname', index=False)

8. 缺失值处理

#直接删除:
df_Na1= df.dropna(axis=0)
#临近元素填充:
df_Na2 = df.fillna(method='ffill')
#使用指定元素:
df_na3=df.fillna(2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuantianyixiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值