帖子

《Python进阶课程》学习笔记分享园地 | 讯飞AI大学

  [复制链接]
173****1522 发表于 2020-7-17 00:12:28 来自手机
31#
#Day 2+学习笔记+07/16
使用道具 举报 回复
136****3075 发表于 2020-7-17 17:56:28
32#
#Day3 学习笔记 07/17
3.jpg
使用道具 举报 回复
开放平台用户-2eldkn 发表于 2020-7-17 20:05:58
33#
Day 3+学习笔记+07/17
使用道具 举报 回复
182****9045 发表于 2020-7-17 20:24:01 来自手机
34#
#Day 2+学习笔记+07/17 transform nvda=pd.read_csv("data/NVDA.csv",index_col=0,parse_dates='"Date"]) nvda.index[0].weekday() key=lambda x:x.year nvda.groupby(key).agg([np.mean,np.std]) zscore=lambda x:(x-x.mean())/x.std() transformed=nvda.groupby(key).transform(zscore) %matplotlib inline nvda.plot() transformed["Adj Close"].plot(grid=True,figsize=(10.8,7.6)) compare=pd.DataFrame({"Original Adj Close":nvda["Adj Close"], "Transformed Adj Close":transformed["Adj Close"]}) compare.plot(grid=True,figsize=(10.8,7.5)) year_key=lambda x:x.year month_key=lambda x:x.month nvda.groupby([year_key,month_key]).sum() nvda.groupby([year_key,month_key]).agg([np.mean,np.std]) monthly_nvda=nvda.groupby([year_key,month_key]).last() index=[ str(i[0]) + "-" + str(i[1]) for i in monthly_nvda.index.values ] index=pd.PeriodIndex(index, freq="M") monthly_nvda.index=index monthly_nvda["Adj Close"].plot()
使用道具 举报 回复
135****8217 发表于 2020-7-17 20:30:49
35#
7.17学习心得
Python-pandas之数据整合
1.      concatenate
import numpy as np
import pandas aspd
df1=pd.DataFrame({“apts”:[55000,60000],
“cars”:[200000,30000]},
Index=[“Shanghai”,”Beijing”])
df1
df2=pd.DataFrame({“apts”:[25000,20000],
“cars”:[150000,12000]},
Index=[“Hangzhou”,”Nanjing”])
Df3=pd.DataFrame({“apts”:[30000,10000],
“cars”:[180000,10000]},
Index=[“Guangzhou”,”Chongqing”])
两个表格的合并
Result=pd.concat([df1,df2])或者df1.append(df2)
三个表格的合并
Result=pd.concat([df1,df2,df3])或者df1.append([df2,df3])
指定x,y,z为对应的index
Result2=pd.concat([df1,df2,df3],keys=[“x”,”y”,”z”])
取出对应index中的内容
Result2.loc[“y”]
df4=pd.DataFrame({“salaries”:[10000,30000,30000,20000,15000]},
Index=[“Suzhou”,”Beijing”,”Shanghai”,”Guangzhou”,”Tianjin”])
Print(df4)
横向拼接两个表格的相同内容(按照列拼接,会去重)
Result3=pd.concat([Result,df4],axis=1)
横向拼接两个表格(按照行拼接)
pd.concat([Result,df4],axis=0)
inner:表格两方的内容都match上会被保留,有一方未被match上,会去掉
Result4=pd.concat([Result,df4],axis=1join=”inner”)
只保留左边
Result4=pd.concat([Result,df4],axis=1join_axes=[result.index])
只保留右边
Result4=pd.concat([Result,df4],axis=1join_axes=[ df4.index])
DataFrameSeries的拼接
S1=pd.Series{[60,50],index=[“Shanghai”,”Beijing”],name=”meal”}
Pd.concat([df1,s1])
df1.append(s1)

使用道具 举报 回复
155****9512 发表于 2020-7-17 20:45:27
36#
#day2 学习笔记 07/17
1.contat( [ list of dataframe ], 其他参数 )
其他参数:axis缺省时按行拼接 设置为 1 可以“合并同类项”
                 join=left 保留左边的  right右边

                 join_axes=[df4.index] 拼接数据以df4为主
2.append
df1.append(df2)
df1.append([df2,df3,df4])
3.merge(df1,df2,其他参数)更加广义的合并
参数:on根据哪一列拼接
          how= left \right \inner \outer

使用道具 举报 回复
189****5605 发表于 2020-7-17 21:21:25
37#
day2+学习笔记+7/17Python-pandas之数据整合
import numpy as np
import pandas as pd
pd.concat([df1,df2,df3])
pd.concat([df1,df2,df3],keys=["x","y","z"])
result3 = pd.concat([result,df4],axis=1)
result4 = pd.concat([result,df4],axis=1,join="inner")#完全匹配才被保留
result5 = pd.concat([result,df4],axis=1,join_axes=[result.index])

append来做concatenation
df1.append([df2,df3])

s1 = pd.Series([60,50],index["Shangha","Beijing"],name="meal")
pd.concat([df1,s1],axis=1)
s2 = pd.Series([18000,12000],index=["apts","cars],name="Xiamen")
df1.append(s2)
Merge(Join)
result = result.reset_index().rename(columns={"index":"cities"})
df4.reset_index().rename(columns={"index":"cities"})
pd.merge(result,df4,on="cities")#inner join
pd.merge(result,df4,on="cities",how="left")#"right"标记join方式
join on index
df4 = df4.set_index("cities")
df1.join(df4,how="right")#"left","outer"
pd.merge(df1,df4,left_index=True,right_index=True,how="outer")
pd.concat([df1,df4],axis=1,join_axes=[df1.index])


goog = pd.read_csv("data/GOOG.csv",index_col=0,parse_datas=["Date"])
goog.shape

@matplotlib inline
goog["Adj close"].plot()
app1 = pd.read_csv("data/AAPL.csv",index_col=0,parse_datas=["Date"])
app1.shape
app1["adj close"].plot()#出现了null值 不能被转换成浮点型
app1["adj close"] [app1["adj close"] =="null"] = np.NaN
app1["adj close"]  = app1["adj close"].ffill() #前向填充
app1["adj close"].apply(lambda x:float(x))
app1["adj close"].plot()

stocks = pd.concat([app1[adj close],d[adj close],f[adj close]],axis=1,keys=["app1","d","f"])
stocks.plot()
前面的值不要了
valid_stocks = stocks[stocks.index > stocks["goog"].first_valid_index()]
valid_stocks.plot(grid=True)

使用道具 举报 回复
发表于 2020-7-17 21:23:32
38#
#Day 3+学习笔记+07/17
df1 = pd.DataFrame({"apts":[55000,60000], "cars":[200000,300000], index=['Shangha', 'Beijing'])
df2 = pd.DataFrame({"apts":[25000,10000], "cars":[150000,120000], index=['Hangzhou', 'Najing'])
df3 = pd.DataFrame({"apts":[30000,10000], "cars":[180000,100000], index=['Guangzhou', 'Chongqing'])
result = pd.concat([df1,df2,df3])
result2 = pd.concat([df1,df2,df3,keys=["x","y","z"])
result2.loc["y"]
df4=pd.DataFrame({'salaries‘:[10000,30000,30000,20000,15000]}, index=['Suzhou','Beijing','Shanghai','Guangzhou','Tianjin'])
pd.concat([result, df4])
result3 = pd.concat([result, df4], axis=1) //axis=1 可以将索引名称相同的行数据内容给合并掉
result4 = pd.concat([result, df4], axis=1, join="inner") //join="inner" 可以去掉 NaN,即忽略不匹配的行,
result5 = pd.concat([result, df4], axis=1, join_axes="result.index") //join_axes="result.index" 只保留 join_axes里对应的数据列的索引内容
df1.append(df4)
df1.append([df2,df3])
s1=pd.Series([60,50], index=["Shanghai", "Beijing"], name="meal")
pd.concat([df1, s1])
pd.concat([df1, s1], axis=1)
s2=pd.Series([180000,120000], index=["apts", "cars"], name="Xiamen")
df1.append(s2)

使用道具 举报 回复
183****9013 发表于 2020-7-17 21:37:36
39#
#Day3+学习笔记+07/17
QQ截图20200717213715.jpg

使用道具 举报 回复
152****1851 发表于 2020-7-17 23:10:42
40#
#Day 3+学习笔记+07/17
本次课程介绍了如何使用Pandas的concat函数。
使用 pd.concat([df1,df2,df3]) 就可以将三个数据整合成一个新的数据,但是他们是依次增加,遇到相同的index,是不会整合成一行的。
如果要将index相同的行整合成一行,需要添加 axis=1 这个参数;
如果要去掉NaN的行,可以添加 join="inner" 参数;
如果想保留其中一个数据的所有index行,可以使用 join_axes="df1.index" 这个参数;
result = pd.concat([df1,df2], axis=1, join_axes="df1.index")

使用道具 举报 回复