我已经使用熊猫整理了数据。我将程序填写如下
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:列(0)具有混合类型。在导入时指定dtype选项,或将low_memory = False设置为'。
请帮我
print(df2.info())是
RangeIndex:1089023条目,0到1089022
数据列(共8列):
STDR_YM_CD 1089023非空对象
TRDAR_CD 1089023非空int64
TRDAR_CD_NM 1085428非空对象
SVC_INDUTY_CD 1089023非空对象
SVC_INDUTY_CD_NM 1089023非空对象
THSMON_SELNG_AMT 1089023非空int64
THSMON_SELNG_CO 1089023非空int64
STOR_CO 1089023非空int64
dtypes:int64(4),对象(4)
内存使用量:66.5+ MB
没有
最佳答案
MultiIndex
被称为第一列和第二列,如果默认情况下第一层具有重复项,则会“分散”较高级别的索引,以使控制台输出看起来更轻松。
通过将MultiIndex
设置为display.multi_sparse
,可以在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按文件:
您可以通过在
usecols
中添加参数read_csv
然后通过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