我使用pandas组织了我的数据。我把我的程序填写如下
import pandas as pd
import numpy as np
df1 = pd.read_table(r'E:\빅데이터 캠퍼스\골목상권 프로파일링 - 서울 열린데이터 광장 3.초기-16년5월분1\17.상권-추정매출\201301-201605\tbsm_trdar_selng.txt\tbsm_trdar_selng_utf8.txt' , sep='|' ,header=None
,dtype = { '0' : pd.np.int})
df1 = df1.replace('201301', int(201301))
df2 = df1[[0 ,1, 2, 3 ,4, 11,12 ,82 ]]
df2_rename = df2.columns = ['STDR_YM_CD', 'TRDAR_CD', 'TRDAR_CD_NM', 'SVC_INDUTY_CD', 'SVC_INDUTY_CD_NM', 'THSMON_SELNG_AMT', 'THSMON_SELNG_CO', 'STOR_CO' ]
print(df2.head(40))
df3_groupby = df2.groupby(['STDR_YM_CD', 'TRDAR_CD' ])
df4_agg = df3_groupby.agg(np.sum)
print(df4_agg.head(30))
当我打印df2时,我可以看到TRDAR_CD列中的11947和11948值。如下面的图片
之后,我使用了groupby函数,在TRDAR_CD列中丢失了11948个值。您可以在下面的图片中看到这种情况
可能,这个问题来自警告信息?警告消息是' sys:1:DtypeWarning:Columns(0)具有混合类型。在导入时指定dtype选项或设置low_memory = False。'
帮我plz
print(df2.info())是
RangeIndex:1089023个条目,0到1089022
数据列(共8列):
STDR_YM_CD 1089023非空对象
TRDAR_CD 1089023非null int64
TRDAR_CD_NM 1085428非空对象
SVC_INDUTY_CD 1089023非空对象
SVC_INDUTY_CD_NM 1089023非空对象
THSMON_SELNG_AMT 1089023非null int64
THSMON_SELNG_CO 1089023非null int64
STOR_CO 1089023非null int64
dtypes:int64(4),object(4)
内存使用量:66.5 + MB
无
答案 0 :(得分:2)
MultiIndex
被称为第一列和第二列,如果第一级默认重复,则“稀疏”更高级别的索引,以使控制台输出更容易一些。
您可以将display.multi_sparse
设置为MultiIndex
,在False
的第一级显示数据。
样品:
df = pd.DataFrame({'A':[1,1,3],
'B':[4,5,6],
'C':[7,8,9]})
df.set_index(['A','B'], inplace=True)
print (df)
C
A B
1 4 7
5 8
3 6 9
#temporary set multi_sparse to False
#http://pandas.pydata.org/pandas-docs/stable/options.html#getting-and-setting-options
with pd.option_context('display.multi_sparse', False):
print (df)
C
A B
1 4 7
1 5 8
3 6 9
编辑问题编辑:
我认为问题是值11948
的类型是string
,因此省略了。
EDIT1 by file:
您可以在read_csv
中添加参数usecols
然后按GroupBy.sum
汇总来简化您的解决方案:
import pandas as pd
import numpy as np
df2 = pd.read_table(r'tbsm_trdar_selng_utf8.txt' ,
sep='|' ,
header=None ,
usecols=[0 ,1, 2, 3 ,4, 11,12 ,82],
names=['STDR_YM_CD', 'TRDAR_CD', 'TRDAR_CD_NM', 'SVC_INDUTY_CD', 'SVC_INDUTY_CD_NM', 'THSMON_SELNG_AMT', 'THSMON_SELNG_CO', 'STOR_CO'],
dtype = { '0' : int})
df4_agg = df2.groupby(['STDR_YM_CD', 'TRDAR_CD' ]).sum()
print(df4_agg.head(10))
THSMON_SELNG_AMT THSMON_SELNG_CO STOR_CO
STDR_YM_CD TRDAR_CD
201301 11947 1966588856 74798 73
11948 3404215104 89064 116
11949 1078973946 42005 45
11950 1759827974 93245 71
11953 779024380 21042 84
11954 2367130386 94033 128
11956 511840921 23340 33
11957 329738651 15531 50
11958 1255880439 42774 118
11962 1837895919 66692 68